Command-Line

gsed:在帶有 Homebrew 的 macOS 上找不到命令

  • December 22, 2019

我正在使用哦我的 zsh。我無法使用一些我可以在 ubuntu 上執行的命令,例如。\s 在正則表達式中。我安裝了 home-brew,然後brew install gnu-sed --default-names仍然無法使用 sed 命令。我的 $PATH 變數有點亂,我不知道如何糾正它。

/Users/ishansrivastava/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin:/opt/X11/bin:/Library/TeX/texbin

我應該怎麼做才能在我的 Mac 上輕鬆使用所有 gnu 命令?另外請提供我必須使用 gnu 命令而不是預設命令的命令列表,例如。gsed而不是sed

正如另一個問題中提到的sed,如果使用 Homebrew安裝 GNU --with-default-names,那麼它將安裝為/usr/local/bin/sed.

如果沒有--with-default-names,它將被安裝為/usr/local/bin/gsed.

如果安裝為sed,那麼這取決於$PATHsed執行時獲取的二進製文件sed。如果您$PATH是如您所描述的,那麼 GNUsed應該優先於本機 macOS sed

請注意,sed如果您之前在同一 shell 會話中在命令行上使用過該命令,那麼 shell 可能已經記憶體了該命令的位置。然後,您可以使用rehashinzsh清除該記憶體,或打開一個新終端。

當系統提供非 GNU 的本機sed實現時,sed通常最好安裝 GNU sedgsed以免破壞依賴於本機特定行為的現有腳本sed。這就是為什麼 macOS 上 Homebrew 的預設行為是將 GNU 安裝sedgsed. 這也是sed在其他 BSD 系統上命名 GNU(以及一般的 GNU 工具)的預設方式。

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