我经常看到答案提到egrep
isgrep -E
或fgrep
isgrep -F
并在他们的答案中使用egrep
or 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/egrep
shell 脚本是这样的:
#!/bin/sh
exec grep -E "$@"
并且/bin/fgrep
本质上是一样的。我还见过一些系统,其中egrep
和fgrep
只是符号链接或硬链接grep
,但我从未见过其中两者都不存在的系统。
但请注意,虽然egrep
和fgrep
已被弃用,但几乎可以肯定它们不会很快消失。快速扫描/usr
我的笔记本电脑(运行 Gentoo Linux)上的脚本会发现几十个软件包,其中的脚本使用其中一种或另一种,包括 Python 和 GCC 等无处不在的东西。
鉴于这一切,人们可以相当讽刺地得出这样的结论:使用已弃用的命令而不是选项的代码实际上是更多的比使用选项的代码更可移植,因为它将在旧系统上运行,而使用选项的代码则不能运行。