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

2024-02-04

我尝试在 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" and do grep --version, I get -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

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

我看过以下帖子,但没有一个解决方案对我有用。更新 Mac OS 10.7 的 grep https://stackoverflow.com/questions/8352197/updating-grep-for-mac-os-10-7/26064330#26064330

有人有解决办法吗?我真的很想使用 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`

New: 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

这一次,似乎有些不一样了。ggrep终于安装好了!我觉得unlink/link理清了一些事情。 我该如何设置ggrep作为默认值?和alias?


更新:正如评论中指出的,该选项已于 2019 年删除。如今 Homebrew 在其标准路径中安装带前缀的二进制文件,在单独的路径中安装无前缀的二进制文件。为了使无前缀的二进制文件可用,您必须将该单独的路径添加到您的PATH环境变量:

PATH="$(brew --prefix grep)/libexec/gnubin:$PATH"

将以上内容添加到您的~/.bashrc(对于 Bash)或~/.zshrc(对于 Zsh)。通过使用brew --prefix grep而不是硬编码/usr/local/opt/grep你确保这在任何地方都有效,包括在没有安装 Homebrew 的机器上/usr/local.


原答案:

要使 GNU grep 成为默认安装,请使用--with-default-names:

$ brew install grep --with-default-names

如果您已经安装了它,请使用reinstall代替install.

确保这件事/usr/local/bin(GNU grep 的位置)是before /usr/bin(BSD grep 的位置)在您的$PATH;这里似乎就是这种情况。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OSX 上安装了 GNU grep,但无法使用 的相关文章

随机推荐