Dlaczego nawiasy we grep
wzorcu usuwają proces grep z ps
wyników?
$ ps -ef | grep XXXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep [X]XXX
[...] XXXX
Dlaczego nawiasy we grep
wzorcu usuwają proces grep z ps
wyników?
$ ps -ef | grep XXXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep [X]XXX
[...] XXXX
Odpowiedzi:
Po uruchomieniu ps -ef | grep string
grep jest wyświetlany na wyjściu, ponieważ string
pasuje [...] grep string
.
Ale po uruchomieniu ps -ef | grep [s]tring
linii nie jest wyświetlany, ponieważ grep przekłada [s]tring
się string
, natomiast wyjścia ps [...] grep [s]tring
, i że nie pasujestring
[]
reprezentuje dowolny zestaw znaków w nawiasach, w tym przypadku „s” jest jedynym…
Ponieważ nawiasy klamrowe muszą być poprzedzone znakiem ucieczki, dla bash raz i dla grep:
$ ps -ef | grep \\[X\\]XXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep "\[X\]XXX"
[...] XXXX
[...] grep XXXX