Não são egrep, fgrep supostamente aliases para grep?

3

Como o egrep é essencialmente grep -E, eu esperaria que fosse um alias que chamasse grep com essa opção. No entanto no meu sistema

file 'which egrep'

mostra que é um executável. Igualmente, egrep como um alias invoca apenas egrep com a opção color. Por que não é um alias? Eles compilam um binário separado para egrep?

Apenas curioso ...

    
por Rohit Banga 19.11.2011 / 00:39

2 respostas

2

Depende do SO e da versão das ferramentas do grep instaladas.

Alguns exemplos de sistemas com os quais tenho acesso:

  • Ubuntu 11.04, GNU grep 2.6.3: / bin / grep, / bin / fgrep e / bin / egrep são três arquivos executáveis distintos com tamanhos diferentes.

  • GNU grep 2.10 (lançado há poucos dias), construído a partir da fonte: o mesmo.

  • Cygwin: o mesmo.

  • CentOS 5.6 (um clone da Red Hat), GNU grep 2.5.1: / bin / egrep e / bin / fgrep são links simbólicos para / bin / grep.

  • GNU grep 2.5.1 criado a partir da fonte: egrep e fgrep são pequenos scripts de shell que invocam o grep.

  • Solaris 9: três arquivos diferentes (ferramentas Solaris, não GNU).

por 19.11.2011 / 10:48
1

Eles costumavam ser executáveis separados, mas atualmente é um único executável com três hard links ("grep", "fgrep" e "egrep") todos apontando para o mesmo programa: o programa verifica qual nome foi começou como e se comporta de acordo.

Então, o que você está executando é um egrep aprimorado com os recursos dos outros dois programas incluídos: e chamando-o por nomes diferentes, ou com -E oferece os recursos esperados.

Se você digitar

ls -i 'which grep'

e o mesmo para fgrep e egrep você pode ver que todos eles têm o mesmo número de inode, o que significa que eles são todos do mesmo arquivo.

    
por 19.11.2011 / 09:31