grep是linux中最常用的命令之一。在我看来,它的基本功能是突出显示您在输出行上搜索的字符串。这可以通过--color选项来实现。
每次输入--color都很烦人,而且效率低下。有什么办法可以将grep更改为grep --color。
我尝试编写一个名为grepd的小脚本,并将其添加到我的PATH变量中。但是该脚本不适用于输入grepd 。有任何建议请。
#!/bin/bash
grep --color $1 $2
grep是linux中最常用的命令之一。在我看来,它的基本功能是突出显示您在输出行上搜索的字符串。这可以通过--color选项来实现。
每次输入--color都很烦人,而且效率低下。有什么办法可以将grep更改为grep --color。
我尝试编写一个名为grepd的小脚本,并将其添加到我的PATH变量中。但是该脚本不适用于输入grepd 。有任何建议请。
#!/bin/bash
grep --color $1 $2
Answers:
只需将以下别名添加到您的shell的配置文件中,例如.bashrc
或.bash_profile
(取决于您使用的名称,请参见此处):
alias grep='grep --color=auto'
您可以简单地将其用作grep
。
当简单的命令别名也可以做同样的事情时,通常无需编写脚本。实际上,如果您想向传递更多选项,您的脚本甚至将无法工作grep
。如果您需要一个可以处理参数的小片段,则应使用functions。
some_command | xargs grep foo
因为xargs不使用别名,所以不会被着色。
#!/bin/sh
exec grep --color "$@"
这说明了当命令无法按您希望的方式正常工作时,使用shell脚本“包装”命令的标准方法。
该exec
避免创建一个额外的过程(一个用于脚本和一个grep的)。如果愿意,可以将其省略。
该"$@"
由所有的脚本的参数,更换不管有多少。它可以正确保留带有空格和外壳程序特殊字符的参数。
尝试放入 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.
GREP_COLORS
是设置的实际颜色。设置为AUTO
不应显示任何颜色。出口GREP_OPTIONS ='-color = auto'应该是答案。
GREP_OPTIONS
环境变量:export GREP_OPTIONS='--color=always'