Shell
阻止執行檔和內置函式將 - 開頭的字元串參數解釋為開關?
假設我想在文件中搜尋以破折號開頭的字元串,例如
"-something"
:grep "-something" filename.txt
但是,這會引發錯誤,因為
grep
其他執行檔以及內置程序都希望將此視為他們無法辨識的命令行開關。有沒有辦法防止這種情況發生?
用於
grep
標記-e
正則表達式模式:grep -e "-something" filename.txt
對於一般的內置使用
--
,在許多實用程序中它標誌著“選項結束”(但不是在 GNU grep 中)。
因為
grep
您還可以通過使用簡單的字元列表來更改正則表達式,使其實際上不以連字元開頭:grep '[-]something'
這個技巧^W方法傳統上用於避免錯誤匹配
ps
:ps -f | grep myprog # lists both the process(es) running myprog AND the grep process # making it harder to do things like choose the right process to kill(1) ps -f | grep '[m]yprog' # lists only the 'real' processes because [m]yprog matches "myprog" # but [m]yprog does NOT match "grep [m]yprog"
但在現代,使用
pgrep
(orpkill
) 更容易。