Grep默认颜色选项


11

grep是linux中最常用的命令之一。在我看来,它的基本功能是突出显示您在输出行上搜索的字符串。这可以通过--color选项来实现。

每次输入--color都很烦人,而且效率低下。有什么办法可以将grep更改为grep --color。

我尝试编写一个名为grepd的小脚本,并将其添加到我的PATH变量中。但是该脚本不适用于输入grepd 。有任何建议请。

#!/bin/bash
grep --color $1 $2

Answers:


21

只需将以下别名添加到您的shell的配置文件中,例如.bashrc.bash_profile(取决于您使用的名称,请参见此处):

alias grep='grep --color=auto'

您可以简单地将其用作grep

当简单的命令别名也可以做同样的事情时,通常无需编写脚本。实际上,如果您想向传递更多选项,您的脚本甚至将无法工作grep。如果您需要一个可以处理参数的小片段,则应使用functions


9
或者等价地,设置GREP_OPTIONS环境变量:export GREP_OPTIONS='--color=always'
杰罗姆

如果您使用fgrep或egrep,则不会添加color选项,您将需要单独的别名。此外,在grep手册页中,@Jérôme:GREP_OPTIONS被标记为已弃用。
Thayne

@Thayne仅适用于GNU grep,而不适用于FreeBSD grep。据我所知,距更改已经过去4年了,它仍然受到支持。折旧并不意味着已删除。
cde

这是我通常要做的,但是在某些情况下无法正常工作。例如: some_command | xargs grep foo因为xargs不使用别名,所以不会被着色。
TM。

2
#!/bin/sh
exec grep --color "$@"

这说明了当命令无法按您希望的方式正常工作时,使用shell脚本“包装”命令的标准方法。

exec避免创建一个额外的过程(一个用于脚本和一个grep的)。如果愿意,可以将其省略。

"$@"由所有的脚本的参数,更换不管有多少。它可以正确保留带有空格和外壳程序特殊字符的参数。


“ exec grep”应为“ exec / bin / grep”
Berend de Boer 2015年

2
@BerenddeBoer并非如此。“ exec grep”将正常工作。搜索grep的路径没有错。
肯斯特,2015年

-1

尝试放入 export GREP_COLORS='AUTO'您的〜/ .bashrc-对我来说有效。

man grep

       --color[=WHEN], --colour[=WHEN]
          Surround  the  matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences
          to display them in color on the terminal.  The colors are defined by the environment variable GREP_COLORS.  The deprecated environment variable GREP_COLOR is still supported, but  its  setting
          does not have priority.  WHEN is never, always, or auto.

5
GREP_COLORS是设置的实际颜色。设置为AUTO不应显示任何颜色。出口GREP_OPTIONS ='-color = auto'应该是答案。
user137369
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.