grep - pourquoi les crochets dans le modèle grep suppriment-ils le processus grep des résultats ps?

12

Pourquoi les crochets d'un grepmodèle suppriment-ils le processus grep des psrésultats?

$ ps -ef | grep XXXX

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


$ ps -ef | grep [X]XXX

[...] XXXX
Gilles 'SO- arrête d'être méchant'
la source
2
C'est un super petit truc, en premier lieu!
Kevin Cantu du
D'autres réponses à cette question sont données ici unix.stackexchange.com/questions/78771/…
erch

Réponses:

20

Lorsque vous exécutez ps -ef | grep string, grep s'affiche dans la sortie car stringcorrespond [...] grep string.

Mais, lorsque vous exécutez ps -ef | grep [s]tringla ligne ne s'affiche pas, car grep se traduit [s]tringpar string, tandis que ps génère [...] grep [s]tring, et cela ne correspond passtring

Stefan
la source
1
... car []représente l'un des jeux de caractères entre parenthèses dont, dans ce cas, "s" est le seul ...
pause jusqu'à nouvel ordre.
oui ... j'ai vraiment eu du mal à expliquer celui-ci en anglais ... ce n'est pas ma première langue :)
Stefan
2

Parce que les crochets doivent être échappés, pour bash une fois et pour grep à nouveau:

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

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


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

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

la source