fgrep或grep -F,哪个更适合可移植脚本?

时间:2015-07-18 11:27:06

标签: shell unix grep posix

我对this answer这个有争议的评论提出了一个问题:我们是否应该使用-F切换(即grep -F)可移植性。到目前为止已经发现的要点是:

grep -F

  • 是POSIX标准。
  • GNU grep声明{@ 1}}已被弃用。

fgrep

  • 历史上它出现在fgrep选项之前。
  • 即使GNU grep声明grep -F被弃用,但它们似乎坚持使用它的历史用途。

如果你考虑旧的(非常古老的)系统,那么你可能会发现其中一些系统中没有fgrep(而且我认为它发生的可能性很小)。但我们是否真的需要担心那些非常旧的机器并避免使用POSIX标准!!

如果您考虑当前的情况并包含那些旧机器(据称/据称没有grep -F),那么将有更多系统支持grep -F

另一方面,如果展望未来,fgrep将成为历史,而fgrep将作为POSIX标准取得胜利。

而且现在使用POSIX标准以获得更好的可移植性并不是一种普遍接受的做法吗?

1 个答案:

答案 0 :(得分:3)

这个问题主要基于意见。即使这样,我也想把我的两分钱放在这里: -

正如您所提到的,fgrep将成为历史记录,grep -F也是POSIX标准,那么允许就可以了(保留遗留代码);在我看来使用fgrep是完全荒谬的。

这些用户可以 轻松说服 the official GNU Grep project page下载新版本的GNU grep。就像在我的系统中一样,grep的版本是2.20(Linux - CentOS 7;内核 - 3.10)。

所以,我提出了两个理由: -

  1. 出于某种目的发布了较新的软件版本---从以前的版本改进并删除任何类型的错误等。所以,这里GNU Grep已经建议使用grep -F这是一个POSIX标准。

  2. 而且,下载和安装新版本的软件并不是一项复杂的任务。它不需要任何额外的新库或某些东西作为依赖项,只是一个更好的版本,可以进行各种搜索,从而消除了使用fgrep的责任。

  3. 坚持旧观点只是为了保留遗留代码将是一个反对它的观点,但是,对于未来的用法,应该坚持使用POSIX标准并始终使用grep -F