Pagina 1 di 1

[Risolto] Trucco "grep [p]rocesso". Spiegazione?

Inviato: martedì 27 maggio 2014, 22:46
da UbuNuovo
C'è qualcuno che mi sa spiegare perché funziona il trucco per non vedere il processo generato da grep filtrando l'output di ps?

Esempi:
Senza parentesi quadre su una lettera, viene stampata anche la riga del processo di ricerca fatta con grep

Codice: Seleziona tutto

8-)  ps ax | grep nm-applet
 2362 ?        Sl     0:04 nm-applet
 7784 pts/3    S+     0:00 grep --color=auto nm-applet
usando il trucco delle parentesi quadre la riga del processo di grep non viene stampata

Codice: Seleziona tutto

8-)  ps ax | grep [n]m-applet
 2362 ?        Sl     0:04 nm-applet
il fatto è che la stessa stringa, bloccata se derivante da ps, non viene bloccata (giustamente) se passata a grep da echo.

Codice: Seleziona tutto

8-) echo '7784 pts/3    S+     0:00 grep --color=auto nm-applet' | grep [n]m-applet
7784 pts/3    S+     0:00 grep --color=auto nm-applet
anche facendo:

Codice: Seleziona tutto

8-) var=$(ps ax | grep nm-applet)
8-) echo "$var" | grep [n]m-applet
 2362 ?        Sl     0:04 nm-applet
 7824 pts/3    R+     0:00 grep --color=auto nm-applet
Il trucco (giustamente) non funziona!

Quindi la domanda è...come fa a funzionare il benedetto trucco?

Re: Trucco "grep [p]rocesso". Spiegazione?

Inviato: martedì 27 maggio 2014, 23:31
da Zoff
Perché con le quadre vai ad utilizzare una espressione regolare.
Il comando ps contiene l'esatto comando eseguito quindi nella sua lista il comando grep apparirà come:

Codice: Seleziona tutto

grep [n]m-applet
se tu provi ad applicare lo stesso comando a quel valore vedrai che non corrisponderà perché ci sono anche le quadre.

Si sfrutta semplicemente il fatto che questo comando non matcha:

Codice: Seleziona tutto

echo 'grep [n]m-applet' | grep [n]m-applet

Re: Trucco "grep [p]rocesso". Spiegazione?

Inviato: martedì 27 maggio 2014, 23:45
da UbuNuovo
Il comando ps contiene l'esatto comando eseguito quindi nella sua lista il comando grep apparirà come:

Codice: Seleziona tutto

grep [n]m-applet
Credo di aver capito ma... grep non valuta solo il testo che ha in input?
Se il testo in input è quello che viene stampato non appare...
Alt! Ho capito!!! É vero!
Ho pensato meglio a quello che effettivamente succede.
Alla richiesta con il trucco dovrebbe comparire la parte con le quadre e quindi grep non trova corrispondenza.
Grazie Zoff

Re: Trucco "grep [p]rocesso". Spiegazione?

Inviato: martedì 27 maggio 2014, 23:50
da UbuNuovo
Infatti funziona anche:

Codice: Seleziona tutto

8-) ps ax | grep 'nm-applet$'
 2362 ?        Sl     0:04 nm-applet

Re: [Risolto] Trucco "grep [p]rocesso". Spiegazione?

Inviato: mercoledì 28 maggio 2014, 9:04
da antex
Detto in due parole: l'espressione regolare /nm-applet/ "matcha" sé stessa, mentre /[n]m-applet/ no.