Shell
如何製作別名以使 grep 命令更短
在我的編碼中,我總是這樣做
grep -rnIi "abcabc" . --color
但是,如何製作一個可以讓我在搜尋字元串中只輸入一個單詞的別名?那可能嗎?
注意這個問題的標籤。這個答案是正確的,
grep
因為 CentOS 6 中包含的版本低於 2.11 版我不相信您可以僅使用別名來執行此操作(至少不是以您編寫的形式-請參閱@Graeme 的替代語法答案)。
***注意:***我還要在這裡提到@Graeme 的解決方案雖然正確,但在 CentOS 5 和 6 上不起作用。我已經確認了這一點,實際上它似乎是
grep
捆綁的(2.11 或更早版本)那些發行版。當開關grep
沒有提供路徑參數時,問題似乎是-r
執行grep -rnIi --color "string"
只是無限期地掛起,試圖搜尋 STDIN。別名不能接受傳遞給它們的參數。它們更像是宏的同義詞,可以通過外殼將它們擴展為其他東西。
$ alias ll='ls -l'
然後可以像這樣使用它:
$ ll -or- $ ll somedir
但是
somedir
不會傳遞給ll
,而是ll
在適當的位置擴展為ls -l
然後ll
在您的命令中替換。回到你的問題
您可以改用 shell 中的函式。函式可以接受參數。
$ function mygrep { grep -rnIi "$1" . --color; }
然後你像這樣使用它:
$ mygrep "blah"