grep: ¿por qué los corchetes en el patrón grep eliminan el proceso grep de los resultados ps?

12

¿Por qué los corchetes en un greppatrón eliminan el proceso grep de los psresultados?

$ ps -ef | grep XXXX

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


$ ps -ef | grep [X]XXX

[...] XXXX
Gilles 'SO- deja de ser malvado'
fuente
2
¡Este es un pequeño gran truco, en primer lugar!
Kevin Cantu
Aquí encontrará
erch

Respuestas:

20

Cuando ejecuta ps -ef | grep string, grep se muestra en la salida porque stringcoincide [...] grep string.

Pero, cuando ejecuta ps -ef | grep [s]tringla línea no se muestra, porque grep se traduce [s]tringen string, mientras que las salidas ps [...] grep [s]tring, y eso no coincidestring

Stefan
fuente
1
... porque []representa cualquiera de los caracteres dentro de los corchetes de los cuales, en este caso, "s" es el único ...
Pausado hasta nuevo aviso.
sí ... Realmente tuve problemas para tratar de explicar esto en inglés ... no es mi primer idioma :)
Stefan
2

Debido a que los corchetes deben escaparse, para bash una vez y para grep nuevamente:

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

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


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

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

fuente