2015-08-31 43 views
1

請考慮以下命令。帶輸入的別名。 Unix

grep -rn "someString" . --color 

而且我想它的別名在我.cshrc並執行這樣的命令:

myGrep someString 

有沒有辦法做到這一點?

+2

使用功能。 – Cyrus

+0

你試過別名mygrep ='grep東西.....' –

+0

'csh'沒有函數,這就是別名可以接受參數的原因。 (或者''csh'沒有函數*因爲別名可以接受參數;我不確定這裏的原因和結果。) – chepner

回答

2

csh在歷史列表擴展的別名之前,記錄您的命令,所以你可以使用歷史擴展,當它來訪問參數的別名用來。

% alias myGrep grep -rn \!:1 . --color 

當您使用myGrep foo,這兩個單詞的命令被記錄在歷史上,然後將其擴展爲grep -rn !:1 . --color。在該命令中,!:1引用前一個命令(myGrep foo)的第一個參數,導致grep -rn foo . --color,這被實際執行。

-2

使用函數來生成帶參數的別名的正確方法是使用函數。在Bash函數中,參數評估爲$1,$2等等。串聯串聯是隱含的。試想一下:

hello() { 
    echo 'Hello' $1 
} 

我簡稱爲這樣的:

$ hello Eduard 
Hello Eduard 
+0

'csh'沒有功能。 – chepner