2014/01/15

在 grep 搜尋「-」符號

用 grep 搜尋檔案中出現的文字,通常會這樣寫:
$ grep STR fileToSeatch

不過當要搜尋的字串有特出符號,像是「-」,就會出現錯誤訊息:
$ grep "->getVal()" *
grep: invalid option -- '>'

原因是 grep 將「-」開頭的字串視為命令選項 (command option),去尋找「>get()」這個選項,而這個選項並不存在,所以導致錯誤。

在命令輸入前加上「--」,表示之後的參數都當作一般輸入而非選項 (end of option):
$ grep -- "->getVal()" *

要搜尋的字串,就算沒有空白,也建議用引號括起來。像是「>」、「&」等,沒加上引號會在 bash 解析時就發生錯誤:
$ grep > *  # shoud be: grep ">" *
bash: *: ambiguous redirect

沒有留言:

張貼留言