Perché le parentesi in un grepmodello rimuovono il processo grep dai psrisultati?
$ ps -ef | grep XXXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep [X]XXX
[...] XXXX
Perché le parentesi in un grepmodello rimuovono il processo grep dai psrisultati?
$ ps -ef | grep XXXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep [X]XXX
[...] XXXX
Risposte:
Quando si esegue ps -ef | grep string, grep viene visualizzato nell'output perché stringcorrisponde [...] grep string.
Ma quando si esegue ps -ef | grep [s]tringla linea non viene visualizzata, perché grep si traduce [s]tringin string, mentre ps viene emesso [...] grep [s]tringe questo non corrispondestring
[]rappresenta uno qualsiasi dei set di caratteri tra parentesi, in questo caso "s" è l'unico ...
Poiché le parentesi devono essere sfuggite, per bash una volta e per grep di nuovo:
$ ps -ef | grep \\[X\\]XXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep "\[X\]XXX"
[...] XXXX
[...] grep XXXX