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


39

我最近发现,在Mac OS XI上可以在外壳中进行设置,~/.profile以便在使用grep时以彩色(白色到红色)打印匹配项。

alias grep='GREP_COLOR="1;37;41" LANG=C grep --color=auto'

但是设置别名似乎是一种破解方法。以前我没有运气就尝试过:

export GREP_COLOR=always           # works fine in Linux

然后我还尝试了:

export GREP_COLOR="1;37;41"

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


我看不出你的问题的重点。别名是您的操作方式。那就是它的目的。export环境变量,例如in中.bash_profile,然后定义alias grep='grep --color',您就完成了。
丹尼尔·贝克

Answers:


60

按照@lupincho的建议,在Mac上按照Grep_color进行操作,这似乎可以正常工作,并且不使用别名:

export GREP_OPTIONS='--color=always'
export GREP_COLOR='1;35;40'

13
为此,最好使用+1,但是将GREP_OPTIONS设置为会导致grep: warning: GREP_OPTIONS is deprecated; please use an alias or script。现在更喜欢这样的东西:alias grep="`which grep` --color=always"
joelittlejohn 2015年

2
在带有xargs的管道中使用grep时,@ joelittlejohn不起作用,例如:find /usr/share -name '*.txt' |xargs grep testing
rfabbri '16

1
@rfabbri我想这是不赞成使用此grep团队的人:)
joelittlejohn

3
--color=always是危险的。从外壳运行的脚本也将继承该选项,并在grep开始注入颜色代码以在脚本内部输出时引起非常神秘的失败。--color=auto不会导致此问题。
Sampo'9

1
@joelittlejohn对于OSX中的默认grep不是正确的。即使在High Sierra 10.13上,它也使用FREEBSD grep 2.5.1,但尚未折旧GREP_OPTIONS。这仅在gnu / grep中适用
-cde
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.