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

fgrep or grep -F, which one is better for portable script?

为了便携性,我对 this answer to a question whether we should use or -F 开关(即 grep -F)发表了这篇有争议的评论。到目前为止已经曝光的要点是:

grep -F:

fgrep:

如果您考虑旧的(非常旧的)系统,那么您可能会发现其中一些没有 grep -F(我认为这种情况发生的可能性非常小)。但是我们真的需要担心那些非常非常旧的机器并避免 POSIX 标准吗!!

如果考虑到现在的情况,把那些老机器(supposedly/allegedly没有grep -F)算进去,那么支持fgrep的系统会更多。

另一方面,如果您展望未来,fgrep 将成为历史,grep -F 将战胜它成为 POSIX 标准。

此外,使用 POSIX 标准以获得更好的可移植性现在不是普遍接受的做法吗?

这个问题有点主要是基于意见。即便如此,我还是想把我的两分钱放在这里:-

正如您提到的,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 的责任。

坚持旧的想法只是为了保留遗留代码是反对它的一点,但是,对于未来的使用,人们应该再次坚持 POSIX 标准并始终使用 grep -F