¿No se supone que egrep, fgrep son alias de grep?

3

Dado que egrep es esencialmente grep -EI esperaría que fuera un alias que llame a grep con esa opción. Sin embargo en mi sistema

file `which egrep`

muestra que es un ejecutable. También egrep como un alias solo invoca egrepcon la opción de color. ¿Por qué no es un alias? ¿Compilan un binario separado para egrep?

Sólo curioso...

Rohit Banga
fuente

Respuestas:

2

Depende del sistema operativo y la versión de las herramientas grep instaladas.

Algunos ejemplos de sistemas a los que tengo acceso:

  • Ubuntu 11.04, GNU grep 2.6.3: / bin / grep, / bin / fgrep y / bin / egrep son tres archivos ejecutables distintos con diferentes tamaños.

  • GNU grep 2.10 (recién lanzado hace unos días), construido a partir de la fuente: lo mismo.

  • Cygwin: lo mismo.

  • CentOS 5.6 (un clon de Red Hat), GNU grep 2.5.1: / bin / egrep y / bin / fgrep son enlaces simbólicos a / bin / grep.

  • GNU grep 2.5.1 construido a partir de la fuente: egrep y fgrep son pequeños scripts de shell que invocan grep.

  • Solaris 9: tres archivos diferentes (herramientas Solaris, no GNU).

Keith Thompson
fuente
1

Solían ser ejecutables separados, pero actualmente es un ejecutable único con tres enlaces duros ("grep", "fgrep" y "egrep") que apuntan al mismo programa: el programa verifica qué nombre se inició y se comporta en consecuencia.

Entonces, lo que está ejecutando es un egrep mejorado con las características de los otros dos programas incluidos: y llamarlo con diferentes nombres, o con -E le brinda las características que espera.

Si escribes

ls -i `which grep`

y lo mismo para fgrep y egrep , puede ver que todos tienen el mismo número de inodo, lo que significa que todos son el mismo archivo.

njd
fuente
Bueno, al menos en mi sistema tienen un número de inodo diferente (apagado por 3). pero en principio entiendo tu punto. podrían ser enlaces simbólicos duros y el programa grep podría buscar argv [0] para averiguar qué opciones aplicar.
Rohit Banga