Shell

如何製作別名以使 grep 命令更短

  • December 26, 2018

在我的編碼中,我總是這樣做 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"

    前任的ss

引用自:https://unix.stackexchange.com/questions/118012