Grep

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

  • January 18, 2018

我經常看到答案提到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

我不認為有任何系統明確沒有它們(但我現在沒有任何現代商業 UNIX 系統可供查看,只有開源系統),但是它們在很多地方只是grep使用適當選項呼叫正常的存根。

例如,在 Gentoo Linux 上,/bin/egrep這個 shell 腳本是:

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

並且/bin/fgrep本質上是一樣的。我還見過一些系統,其中egrepfgrep只是符號連結或硬連結grep,但我從未見過它們都沒有出現的系統。

但是請注意,雖然egrepfgrep已被棄用,但它們幾乎肯定不會很快消失。在我的筆記型電腦(執行 Gentoo Linux)上快速掃描腳本/usr會發現幾十個軟體包,其中包含使用其中一種或另一種的腳本,包括 Python 和 GCC 等無處不在的東西。

鑑於這一切,我們可以相當諷刺地得出結論,使用已棄用的命令而不是選項的程式碼實際上比使用選項的程式碼更具可移植性,因為它可以在使用選項的程式碼的舊系統上執行。

引用自:https://unix.stackexchange.com/questions/418009