grep - почему скобки в шаблоне grep удаляют процесс grep из результатов ps?

12

Почему скобки в grepшаблоне удаляют процесс grep из psрезультатов?

$ ps -ef | grep XXXX

[...] XXXX
[...] grep XXXX


$ ps -ef | grep [X]XXX

[...] XXXX
Жиль "ТАК - перестань быть злым"
источник
2
Во-первых, это отличный маленький трюк!
Кевин Канту
Дальнейшие ответы на этот вопрос приведены здесь unix.stackexchange.com/questions/78771/…
erch

Ответы:

20

Когда вы запускаете ps -ef | grep string, grep отображается в выводе, потому что stringсовпадает [...] grep string.

Но, когда вы запускаете, ps -ef | grep [s]tringстрока не отображается, потому что grep переводит [s]tringв string, а ps выводит [...] grep [s]tring, и это не совпадаетstring

Стефан
источник
1
... потому что []представляет собой любой из набора символов, в скобках которого, в данном случае, "s" является единственным ...
Приостановлено до дальнейшего уведомления.
да ... у меня действительно были проблемы с попыткой объяснить это по-английски ... это не мой родной язык :)
Стефан
2

Поскольку скобки нужно экранировать, для bash один раз и для grep снова:

$ ps -ef | grep \\[X\\]XXX

[...] XXXX
[...] grep XXXX


$ ps -ef | grep "\[X\]XXX"

[...] XXXX
[...] grep XXXX

источник