用grep -n --colour替换grep命令?


17

因为我很懒......每当我想使用grep时,我都希望它是grep -n --colour。有没有办法永久地映射这个?


6
为“因为我很懒...”而+1。有没有考虑过作为开发人员的职业?:)
汉尼拔·莱克特博士2010年

Answers:


31

在$ HOME / .bashrc文件中,添加:

export GREP_OPTIONS="-n --color"

这也适用egrep于使用grep的别名。

更新:从grep 2.21开始不推荐使用GREP_OPTIONS,如果您使用此解决方案,则会看到以下警告:

grep: warning: GREP_OPTIONS is deprecated; please use an alias or script

因此,最好的解决方案是遵循maco的建议。或切换到使用ag,默认情况下以彩色输出。


尊重。
myusuf3

4
尊重但没有投票赞成吗?;-)
richq 2010年

1
管道刚好就可以使用别名。他们只是不递归。
maco 2010年

1
嘿,我赞成。我喜欢这个比别名更好。
Dmitriy Likhten 2010年

@marco:您说得对(使用bash)-我在想csh,但他们做不到。糟糕!
richq

29

编辑〜/ .bash_aliases添加一行内容:

alias grep='grep -n --color'

〜/ .bash_aliases由〜/ .bashrc自动包含(如果存在)


8
或者,.profile如果您希望它在所有shell中都能正常运行,而不仅仅是bash ,则添加该行。
LassePoulsen

1
这不适用于xargs,例如:find /usr/share -name '*.txt' |xargs grep testing
rfabbri '16

2

您可以修改主目录中的文件.bashrc并定义一个别名,该别名将覆盖任何默认设置:

别名grep ='grep -n --color'

更改后关闭并再次打开终端,因为打开终端时文件是只读的。

如果您查看文件.bashrc,将会发现更多默认别名,例如:

别名ll ='ls -l'

别名la ='ls -A'

别名l ='ls -CF'


1

除了其他答案中提到的别名之外,还创建一个脚本。别名本身并不总是有效,并且脚本层足够快,无论如何仍可被人类读取。

选择一个简短的名称,例如cgrep

#!/bin/sh
grep --color -n "$@"

说,将其放在您的路径中~/bin(如果您阅读UPE,则位于路径中:)。然后像这样的东西将起作用:

find /usr/share -name '*.txt' | xargs cgrep testing

我仍然不太高兴,我也希望在标准输出到终端时grep始终显示颜色,而无需有选择地键入cgrep。

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.