grep - por que os colchetes no padrão grep removem o processo grep dos resultados do ps?

12

Por que colchetes em um greppadrão removem o processo grep dos psresultados?

$ ps -ef | grep XXXX

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


$ ps -ef | grep [X]XXX

[...] XXXX
Gilles 'SO- parar de ser mau'
fonte
2
Este é um ótimo truque, em primeiro lugar!
quer
Respostas adicionais para esta pergunta são fornecidas aqui unix.stackexchange.com/questions/78771/…
erch

Respostas:

20

Quando você executa ps -ef | grep string, grep é exibido na saída porque stringcorresponde [...] grep string.

Mas quando você executa ps -ef | grep [s]tringa linha não é exibida, porque grep se traduz [s]tringem string, enquanto ps é gerado [...] grep [s]tring, e isso não correspondestring

Stefan
fonte
1
... porque []representa qualquer um dos caracteres entre colchetes dos quais, neste caso "s" é o único ...
Pausado até novo aviso.
sim ... Eu realmente tive problemas para tentar explicar este em Inglês ... não é minha primeira língua :)
Stefan
2

Como os colchetes precisam ser escapados, para o bash uma vez e para o grep novamente:

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

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


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

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

fonte