Shell

阻止執行檔和內置函式將 - 開頭的字元串參數解釋為開關?

  • November 8, 2019

假設我想在文件中搜尋以破折號開頭的字元串,例如"-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(or pkill) 更容易。

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