在OSX上安装了GNU grep,但无法使用

Hol*_*ash 7 homebrew path

我已经尝试在OSX上安装GNU grep,它似乎已安装,但我无法使用它..我已经使用自制程序,Macports目前有一些问题,所以我不能使用它.

安装: brew tap homebrew/dupes; brew install grep

哪个回报: Warning: homebrew/dupes already tapped! Warning: homebrew/dupes/grep-2.21 already installed

符号链接似乎适用于/ usr/local/bin/ggrep.当我添加别名alias grep="ggrep"并做grep --version,我得到-bash: ggrep: command not found.这是真的,因为文件夹中没有ggrep.我试过安装有没有--with-default-names.

该文件夹/usr/local/Cellar/grep/2.21/bin/包含以下内容:

-r-xr-xr-x 1 Wes admin 158 Oct 14 09:27 egrep
-r-xr-xr-x 1 Wes admin 158 Oct 14 09:27 fgrep
Run Code Online (Sandbox Code Playgroud)

这对我来说很奇怪,因为文档暗示了这一点 The command has been installed with the prefix "g".

我已经看过以下帖子,但没有一个解决方案适合我.更新grep for Mac OS 10.7

有没有人有任何解决方案?我真的想用GNU grep.

产量brew unlink grep && brew link grep -v:

Unlinking /usr/local/Cellar/grep/2.21...
6 symlinks removed
Linking /usr/local/Cellar/grep/2.21...
ln -s ../Cellar/grep/2.21/bin/egrep egrep
ln -s ../Cellar/grep/2.21/bin/fgrep fgrep
ln -s ../../Cellar/grep/2.21/share/info/grep.info grep.info info /usr/local/share/info/grep.info
ln -s ../../../Cellar/grep/2.21/share/man/man1/egrep.1 egrep.1
ln -s ../../../Cellar/grep/2.21/share/man/man1/fgrep.1 fgrep.1
ln -s ../../../Cellar/grep/2.21/share/man/man1/grep.1 grep.1
6 symlinks created`
Run Code Online (Sandbox Code Playgroud)

新: brew uninstall grep; brew install grep

$ which -a grep
/usr/bin/grep

$ which -a ggrep
/usr/local/bin/ggrep

$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin
Run Code Online (Sandbox Code Playgroud)

这一次,似乎有些不同.ggrep终于安装好了!我认为unlink/解决了link一些问题.如何设置ggrep为默认值?用alias

bfo*_*ine 14

要使GNU grep成为默认安装它--with-default-names:

$ brew install grep --with-default-names
Run Code Online (Sandbox Code Playgroud)

如果您已安装使用reinstall而不是install.

确保/usr/local/bin(GNU grep 的位置)在您之前 /usr/bin(BSD grep的位置)$PATH; 这似乎就是这种情况.

您可能必须在之后启动新的shell会话,因为Bash会缓存当前会话的二进制文件路径.这意味着您第一次使用grep它时将根据您的身份确定使用哪个二进制文件$PATH并对其进行缓存.下次它将使用缓存的值,因此$PATH在重新加载shell之前更改您的内容不会改变任何内容.


ele*_*rck 8

上述答案正式过时。

从 Homebrew 版本 2.0.0 开始,该--with-default-names标志不再可用。

来自官方文档

--with-default-names 不再受支持。它现在安装到自己的目录中,您需要调整 PATH 才能使用它。

您需要做的是将此命令添加到您的shell

PATH="/usr/local/opt/grep/libexec/gnubin:$PATH"
Run Code Online (Sandbox Code Playgroud)