0

我习惯在 Linux 下搜索特定的关键字。

例如,我可以在 home 下搜索“TAIWAN”

grep -i -r TAIWAN ./ | grep -v".svn" 

但是,我认为这有点多余;我想使用别名,这样我就可以输入

grep TAIWAN

然后别名会将我的命令扩展为

grep -i -r TAIWAN ./ | grep -v".svn" 

我怎么能做到这一点?

4

2 回答 2

4

您将无法使用别名来执行此操作,但您可以创建一个 bash函数

mygrep () { grep -i -r $* ./ | grep -v".svn"; }
于 2012-08-14T02:11:30.677 回答
2

我不相信 alias 可以完成你想要的,因为没有办法重新排序参数。制作一个小的 shell 命令更简单。而不是 replace grep,因此可能会弄乱期望grep以某种方式运行的程序,我会给它一个新名称,例如rgrep.

#!/bin/sh

grep -i -r "$@" | grep -v .svn

把它放在你的某个地方,PATH~/binchmod +x ~/bin/rgrep. 然后就可以了rgrep TAIWAN .

不幸的是,这将忽略包含文件的行。.svn

您可以尝试修复模式匹配以仅匹配 grep 输出的文件部分,或者您可以使用代替...grep -v来启动更复杂的命令,或者您可以使用 ack。findgrep -r

Ack是一个更好的 grep 并且会避免版本控制目录和其他你不关心的常见文件和目录。它还将自动使用寻呼机并为输出着色。

于 2012-08-14T02:14:31.113 回答