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

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

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

Messaggio 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?
Ultima modifica di UbuNuovo il martedì 27 maggio 2014, 23:53, modificato 1 volta in totale.
Salva l'Ucraina! 🇺🇦
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

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

Messaggio 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
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

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

Messaggio 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
Salva l'Ucraina! 🇺🇦
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

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

Messaggio da UbuNuovo »

Infatti funziona anche:

Codice: Seleziona tutto

8-) ps ax | grep 'nm-applet$'
 2362 ?        Sl     0:04 nm-applet
Salva l'Ucraina! 🇺🇦
antex
Prode Principiante
Messaggi: 85
Iscrizione: mercoledì 14 marzo 2012, 20:59

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

Messaggio da antex »

Detto in due parole: l'espressione regolare /nm-applet/ "matcha" sé stessa, mentre /[n]m-applet/ no.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti