grep
パターンの角かっこがps
の結果からgrepプロセスを削除するのはなぜですか?
$ ps -ef | grep XXXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep [X]XXX
[...] XXXX
ps -ef | grep string
を実行すると、string
が[...] grep string
と一致するため、grepが出力に表示されます。
ただし、ps -ef | grep [s]tring
を実行すると、grepは[s]tring
をstring
に変換し、psは[...] grep [s]tring
を出力し、それはstring
と一致しないため、行は表示されません。
角かっこはエスケープする必要があるため、bashの場合とgrepの場合:
$ ps -ef | grep \\[X\\]XXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep "\[X\]XXX"
[...] XXXX
[...] grep XXXX