使用别名缩短我的命令?

时间:2012-08-14 02:05:56

标签: linux bash shell

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

例如,我可以在家里搜索“TAIWAN”

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

然而,我认为这有点多余;我想使用别名,所以我可以输入

grep TAIWAN

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

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

我怎么能实现这个目标?

2 个答案:

答案 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,它将避免版本控制目录和您不关心的其他常见文件和目录。它还会自动使用寻呼机并为输出着色。