fgrep ou grep -F, qual é o melhor para o script portátil? [fechadas]

3

Estou tendo este comentário controverso sobre esta resposta para uma pergunta sobre se devemos usar ou com o parâmetro -F (ie grep -F ) para portabilidade. Os pontos que foram revelados até agora são:

grep -F :

  • É um padrão POSIX.
  • O GNU grep declarou fgrep como obsoleto.

fgrep :

  • Historicamente, veio antes da opção grep -F .
  • Mesmo que o GNU grep tenha declarado que fgrep está obsoleto, parece que ele continua com o uso histórico.

Se você considera sistemas antigos (muito antigos), provavelmente você pode encontrar alguns deles não tendo o grep -F neles (e eu acho que a chance de isso acontecer é muito rara). Mas nós realmente precisamos nos preocupar com essas máquinas muito antigas e evitar o padrão POSIX para isso!

Se você pensar sobre a situação atual e incluir essas máquinas antigas (que supostamente / supostamente não têm grep -F ), os sistemas que suportam fgrep serão mais.

Por outro lado, se você olhar para o futuro, fgrep será uma história e grep -F triunfará como um padrão POXIS.

E, além disso, não é um conhecimento geral agora, usar o padrão POSIX para melhor portabilidade?

    
por Jahid 18.07.2015 / 13:40

1 resposta

6

grep -F é POSIX. fgrep não é. Use grep -F e deixe claro que seu script depende de um POSIX grep . Dependências claramente declaradas são tudo o que você precisa.

Eu acho que você poderia usar os dois ...

if    command -v fgrep 
then  _grepf(){ fgrep "$@"; }
else  _grepf(){ grep -F "$@"; }
fi    >/dev/null

... mas fazer coisas assim é hacky e geralmente uma perda de tempo. Defina um nível mínimo de conformidade em sua lista de dependências e permita que o padrão manipule o restante.

    
por 18.07.2015 / 16:30

Tags