fgrep 或 grep -F,哪个更适合可移植脚本?
fgrep or grep -F, which one is better for portable script?
为了便携性,我对 this answer to a question whether we should use fgrep or grep 和 -F
开关(即 grep -F
)发表了这篇有争议的评论。到目前为止已经曝光的要点是:
grep -F
:
- 是 POSIX 标准。
- GNU
grep
已声明 fgrep
已弃用。
fgrep
:
- 历史上它出现在
grep -F
选项之前。
- 尽管 GNU grep 声明
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)。
所以,我会提出两个原因:-
出于某种目的发布较新的软件版本 --- 改进以前的版本并删除任何类型的错误等。因此,这里 GNU Grep 已经推荐使用 grep -F
,这是一个 POSIX 标准。
而且,下载和安装新版本的软件并不是一项复杂的任务。它不需要任何 额外的新库 或其他依赖项,只是一个更好的版本,可以进行各种搜索,从而消除了使用 fgrep
的责任。
坚持旧的想法只是为了保留遗留代码是反对它的一点,但是,对于未来的使用,人们应该再次坚持 POSIX 标准并始终使用 grep -F
。
为了便携性,我对 this answer to a question whether we should use fgrep or grep 和 -F
开关(即 grep -F
)发表了这篇有争议的评论。到目前为止已经曝光的要点是:
grep -F
:
- 是 POSIX 标准。
- GNU
grep
已声明fgrep
已弃用。
fgrep
:
- 历史上它出现在
grep -F
选项之前。 - 尽管 GNU grep 声明
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)。
所以,我会提出两个原因:-
出于某种目的发布较新的软件版本 --- 改进以前的版本并删除任何类型的错误等。因此,这里 GNU Grep 已经推荐使用
grep -F
,这是一个 POSIX 标准。而且,下载和安装新版本的软件并不是一项复杂的任务。它不需要任何 额外的新库 或其他依赖项,只是一个更好的版本,可以进行各种搜索,从而消除了使用
fgrep
的责任。
坚持旧的想法只是为了保留遗留代码是反对它的一点,但是,对于未来的使用,人们应该再次坚持 POSIX 标准并始终使用 grep -F
。