我习惯在Linux下搜索特定的关键字。
例如,我可以在家里搜索“TAIWAN”
grep -i -r TAIWAN ./ | grep -v".svn"
然而,我认为这有点多余;我想使用别名,所以我可以输入
grep TAIWAN
然后别名会将我的命令扩展为
grep -i -r TAIWAN ./ | grep -v".svn"
我怎么能实现这个目标?
答案 0 :(得分:4)
您将无法使用别名执行此操作,但您可以创建bash 功能:
mygrep () { grep -i -r $* ./ | grep -v".svn"; }
答案 1 :(得分:2)
我不相信别名可以完成你想要的东西,因为没有办法重新排序参数。制作一个小shell命令更简单。而不是替换grep
,从而可能搞砸了期望grep
以某种方式行事的程序,我会给它一个新名称,例如rgrep
。
#!/bin/sh
grep -i -r "$@" | grep -v .svn
将其放在PATH
~/bin
中的某个位置,并使其chmod +x ~/bin/rgrep
可执行。然后你可以rgrep TAIWAN .
。
不幸的是,这会忽略包含.svn
的行以及文件。
您可以尝试修复grep -v
模式匹配以仅匹配grep输出的文件部分,或者您可以使用find
代替grep -r
来创建更复杂的命令......或者你可以使用ack。
Ack是一个更好的grep,它将避免版本控制目录和您不关心的其他常见文件和目录。它还会自动使用寻呼机并为输出着色。