
grep
パターンの括弧が結果からgrep手順を削除するのはなぜですかps
?
$ ps -ef | grep XXXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep [X]XXX
[...] XXXX
答え1
grep を実行すると、ps -ef | grep string
出力にstring
match と表示されます[...] grep string
。
ただし、実行するとgrepがに変換され、psが出力され、一致するものがないps -ef | grep [s]tring
ため、その行は表示されません。[s]tring
string
[...] grep [s]tring
string
答え2
角括弧は bash に対して 1 回、grep に対して 1 回エスケープする必要があるため:
$ ps -ef | grep \\[X\\]XXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep "\[X\]XXX"
[...] XXXX
[...] grep XXXX