已弃用的egrep和fgrep命令的可用性

已弃用的egrep和fgrep命令的可用性

我经常看到答案提到egrepisgrep -Efgrepisgrep -F并在他们的答案中使用egrepor fgrep,即使这些在技术上已被弃用。

所以我想知道是否有一些现代(ish)类unix系统的特定示例不提供命令集之间的这种链接。例如,GNU grep 手册包含

此外,还有两个变体程序egrep 和fgrep 可用。 egrep 与“grep -E”相同。 fgrep 与“grep -F”相同。不推荐使用egrep或fgrep直接调用,但提供它是为了允许依赖它们的历史应用程序在不修改的情况下运行。

而 FreeBSD 有

此外,还有两个变体程序egrep 和fgrep 可用。 egrep 与 grep -E 相同。 fgrep 与 grep -F 相同。

很高兴知道脚本不一定在所有地方都有效,即使明天可能会删除egrep或。fgrep

答案1

我不认为有任何系统明确有它们(但我现在没有任何现代商业 UNIX 系统可供查看,只有开源系统),但有相当多的它们只是使用grep适当选项调用常规的存根。

例如,在 Gentoo Linux 上,/bin/egrepshell 脚本是这样的:

#!/bin/sh
exec grep -E "$@"

并且/bin/fgrep本质上是一样的。我还见过一些系统,其中egrepfgrep只是符号链接或硬链接grep,但我从未见过其中两者都不存在的系统。

但请注意,虽然egrepfgrep已被弃用,但几乎可以肯定它们不会很快消失。快速扫描/usr我的笔记本电脑(运行 Gentoo Linux)上的脚本会发现几十个软件包,其中的脚本使用其中一种或另一种,包括 Python 和 GCC 等无处不在的东西。

鉴于这一切,人们可以相当讽刺地得出这样的结论:使用已弃用的命令而不是选项的代码实际上是更多的比使用选项的代码更可移植,因为它将在旧系统上运行,而使用选项的代码则不能运行。

相关内容