我对this answer这个有争议的评论提出了一个问题:我们是否应该fgrep或grep使用-F
切换(即grep -F
)可移植性。到目前为止已经发现的要点是:
grep -F
:
grep
声明{@ 1}}已被弃用。 fgrep
:
fgrep
选项之前。grep -F
被弃用,但它们似乎坚持使用它的历史用途。如果你考虑旧的(非常古老的)系统,那么你可能会发现其中一些系统中没有fgrep
(而且我认为它发生的可能性很小)。但我们是否真的需要担心那些非常旧的机器并避免使用POSIX标准!!
如果您考虑当前的情况并包含那些旧机器(据称/据称没有grep -F
),那么将有更多系统支持grep -F
。
另一方面,如果展望未来,fgrep
将成为历史,而fgrep
将作为POSIX标准取得胜利。
而且现在使用POSIX标准以获得更好的可移植性并不是一种普遍接受的做法吗?
答案 0 :(得分:3)
这个问题主要基于意见。即使这样,我也想把我的两分钱放在这里: -
正如您所提到的,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
。