如何在 Mac OS X 的终端中使用颜色 grep?

cwd*_*cwd 49 mac terminal grep console macos

我最近发现在 Mac OS XI 上可以在我的 shell 中设置它,~/.profile这样当我使用grep它时会以彩色(白色和红色)打印匹配项。

alias grep='GREP_COLOR="1;37;41" LANG=C grep --color=auto'
Run Code Online (Sandbox Code Playgroud)

但是设置别名似乎是一种黑客方法来做到这一点。以前我试过没有运气:

export GREP_COLOR=always           # works fine in Linux
Run Code Online (Sandbox Code Playgroud)

然后我也尝试过:

export GREP_COLOR="1;37;41"
Run Code Online (Sandbox Code Playgroud)

有没有比设置别名更好的方法呢?

小智 76

按照@lupincho 的建议,Mac 上的每个Grep_color似乎工作正常,并且不使用别名:

export GREP_OPTIONS='--color=always'
export GREP_COLOR='1;35;40'
Run Code Online (Sandbox Code Playgroud)

  • 对此有一个 +1 作为一个很好的解决方案,但是设置 GREP_OPTIONS 会导致 `grep: warning: GREP_OPTIONS is deprecated; 请使用别名或脚本`。现在更喜欢这样的东西:`alias grep="\`which grep\` --color=always"` (14认同)
  • `--color=always` 是危险的。从 shell 运行的脚本也将继承该选项,并在 grep 开始注入颜色代码以在脚本内部输出时导致非常神秘的失败。`--color=auto` 不会导致这个问题。 (7认同)
  • @joelittlejohn 这不适用于 OSX 中的默认 grep。即使在 High Sierra 10.13 上,它也使用 FREEBSD grep 2.5.1,它没有贬值 GREP_OPTIONS。这仅适用于 gnu/grep (3认同)
  • @joelittlejohn 在带有 xargs 的管道中使用 grep 时不起作用,例如:`find /usr/share -name '*.txt' |xargs grep testing` (2认同)