Shell-Script
grep 標誌不忽略大小寫
我有一個簡單的腳本來搜尋我的程式碼源中的模式,名為
prgrep
#!/usr/bin/bash grep -irnI --exclude-dir={.git,obj} --exclude=tags --color=auto "$@"
(它是一個腳本而不是別名或函式的事實是我希望能夠從內部
vim
和使用任何 shell 呼叫它)請注意,搜尋不區分大小寫(因為我認為這是一個很好的預設搜尋)並且腳本接受任何接受的標誌
grep
。我想要
grep
一個標誌--no-ignore-case
,以便腳本的呼叫者可以覆蓋腳本的-i
標誌,但GNU grep
不提供這個。你有什麼簡單的想法來提供這樣的功能嗎?目前我有一個名為的單獨腳本
Prgrep
,它執行區分大小寫的搜尋。編輯
do 的 最新版本GNU grep
提供了一個--no-ignore-case
選項,這正是我所需要的。我正在使用GNU grep 3.1
,它仍然沒有這個選項。
新版本具有覆蓋
grep
的選項:--no-ignore-case``-i
–no-ignore-case
不要忽略模式和輸入數據中的大小寫區別。這是預設設置。此選項對於傳遞給已使用 -i 的 shell 腳本很有用,以取消其效果,因為這兩個選項相互覆蓋。
對於舊版本的
grep
,您可以簡單地將其作為選項添加到您的腳本中:#!/usr/bin/bash if [ "$1" = "--no-ignore-case" ]; then shift grep -rnI --exclude-dir={.git,obj} --exclude=tags --color=auto "$@" else grep -irnI --exclude-dir={.git,obj} --exclude=tags --color=auto "$@" fi
注意:
--no-ignore-case
呼叫腳本時需要成為第一個參數。