2012-08-14 82 views
0

我習慣在Linux下搜索特定的關鍵字。使用別名縮短我的命令?

例如,我可以通過

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

搜索「TAIWAN」下家。然而,我認爲這是一個有點多餘;我想用一個別名,所以我可以輸入

grep TAIWAN 

,然後別名將擴大我的命令到

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

我怎麼能做到這一點?

回答

4

您將無法與別名做到這一點,但您可以創建一個bash 功能

mygrep() { grep -i -r $* ./ | grep -v".svn"; } 
2

我不相信別名可以完成你想要什麼,因爲有沒有辦法重新排列參數。製作一個小shell命令更簡單。而不是取代grep,並因此可能搞砸了預期grep以某種方式表現的程序,我會給它一個新名稱,如rgrep

#!/bin/sh 

grep -i -r "[email protected]" | grep -v .svn 

把在某處你PATH~/bin並使其可執行文件chmod +x ~/bin/rgrep。那麼你可以rgrep TAIWAN .

不幸的是,這將忽略其中包含.svn以及文件。

你可以嘗試修復了grep -v模式匹配只匹配grep的輸出文件的一部分,或者你可以掀起使用find代替grep -r更復雜的命令,也可以使用ACK。

Ack是一個更好的grep,它將避免版本控制目錄以及其他您不關心的常見文件和目錄。它也將自動使用尋呼機併爲輸出着色。