Dispositivo null - '/dev/null'
Tutti i sistemi basati su Linux hanno una funzione chiamata Dispositivi virtuali. Questi dispositivi virtuali interagiscono come file effettivi nel sistema operativo. Il funzionamento di tali dispositivi virtuali è simile ai dispositivi reali; Sono abituati a scrivere e leggere i dati. La differenza principale tra i due è che i dati per i dispositivi virtuali sono forniti dal sistema operativo.
/dev/null è un dispositivo null-un tipo speciale di dispositivo virtuale. È presente in ogni sistema Linux e lo scopo di questo dispositivo è di scartare qualsiasi cosa inviata e leggere la fine del file (EOF). La maggior parte dei dispositivi virtuali vengono utilizzati per leggere i dati; Tuttavia, /dev /null è unico poiché viene utilizzato per sopprimere tutti i dati scritti ad esso. In parole semplici, funge da buco nero per tutti i dati scritti nei sistemi operativi Linux.
Ora, diamo un'occhiata alle parti rimanenti del comando 2> /dev /null
Descrittore di file - '2'
Ogni esecuzione di comandi in Linux genera tre file associati: input standard, output standard e file di errore standard. Il sistema operativo Linux si riferisce a ciascuno di questi file con un numero intero non negativo unico.
I termini tecnici per input standard, output standard e flussi di errore standard sono rispettivamente stdin, stdout e stderr.
Sappiamo che il numero '2' nel comando '2>/dev/null' si riferisce al flusso di errore standard (STDERR).
Operatore di reindirizzamento del file - '>'
Il simbolo '>' è noto come operatore di reindirizzamento del file. Il suo scopo è dirigere ciò che è alla sua sinistra ai comandi sul lato destro. In parole più semplici, qualsiasi stringa di dati a sinistra verrà diretta sul lato destro dell'operatore.
Finora, abbiamo compreso lo scopo dietro ogni componente del comando 2>/dev/null. Invia il flusso di errore a /dev /null, che lo scarta. In altre parole, questo comando viene utilizzato per scartare e sopprimere gli output di errori. Tuttavia, se sei un veterano di Linux esperto, puoi guardare il contenuto del file /dev /null eseguendo il seguente comando nel terminale:
$ ls -l /dev /null
Questo comando viene generalmente utilizzato negli scenari in cui dobbiamo filtrare l'output in base agli errori o quando vogliamo scartare qualsiasi output associato a descrizioni errate. Andando avanti, esamineremo esempi del suo utilizzo su un sistema Ubuntu.
Usando 2>/dev/null
Dal momento che sappiamo che il comando 2>/dev/null viene utilizzato per scartare errori, verrà sempre utilizzato insieme ad altri comandi. Vedremo un approccio simile nei seguenti esempi. È possibile aprire il terminale accedendolo tramite il menu delle applicazioni o utilizzando la tastiera di scelta rapida Ctrl + Alt + T.
Nel primo esempio, condurremo una ricerca nella / sys / directory per una stringa casuale (Helloworld in questo caso). Il comando per la ricerca è grep e il suo argomento sarà la stringa di ricerca. Immettere il seguente comando per cercare la stringa.
$ GREP -R HelloWorld /sys /
Questo comando di ricerca è destinato a visualizzare numerosi errori poiché viene utilizzato senza accesso alla radice. Invieremo il suo flusso di errore a/dev/null utilizzando il comando 2>/dev/null per scartare questi errori.
$ GREP -R Helloworld /sys /2> /dev /null
Possiamo vedere che l'output del comando è molto più ordinato e più semplice dell'ultimo. Il motivo è che gli errori vengono scartati usando 2> /dev /null e poiché il comando Grep non è stato in grado di trovare alcun file corrispondente alla nostra stringa "Helloworld", non mostra alcun output.
Per capire meglio l'uso di /dev /null, esamineremo il seguente esempio di ping di qualsiasi sito Web (Google.com nel nostro caso). Puoi ping google.com eseguendo il seguente comando:
$ ping Google.com
Se desideriamo escludere tutti i ping non riusciti, possiamo usare il comando 2>/dev/null:
$ ping Google.com 2> /dev /null
In questo caso, il flusso di errori standard (che mostra i ping non riusciti a Google.com) viene inviato al dispositivo virtuale /dev /null che li scarta.
Tuttavia, se desideriamo vedere solo i ping non riusciti, possiamo eseguire il seguente comando:
$ ping Google.com 1> /dev /null
Qui, inviamo il flusso di output standard (stdout) al dispositivo /dev /null che lo scarta. Di conseguenza, siamo rimasti solo con i ping che non sono riusciti a raggiungere Google.Server com. Tuttavia, nel nostro caso, non ci sono stati ping falliti. Possiamo anche dirigere StDout e Stderr in diverse posizioni. Questo è utile se vogliamo scartare l'output e archiviare errori in un registro o viceversa. È possibile eseguire il seguente comando per archiviare i ping non riusciti in un registro degli errori mentre scarta l'output standard del comando ping:
$ ping Google.com 1> /dev /null 2> Errore.tronco d'albero
A volte, potresti voler sopprimere tutta l'output di un comando (inclusi output standard e errori standard). Possiamo raggiungere questo obiettivo utilizzando il dispositivo /dev /null in modo leggermente diverso. È possibile digitare il seguente comando per sopprimere tutto l'output:
$ ping Google.com>/dev/null 2> & 1
Si noti che l'ordine dei comandi qui è molto importante. Dopo aver eseguito il comando ping, '>/dev/null' dice al sistema di sopprimere l'output e '2> & 1' dirige il flusso di errore standard sull'output standard. In questo modo, tutto l'output del comando viene scartato.
Conclusione
Abbiamo analizzato il comando 2>/dev/null e semplici esempi in questo articolo e, si spera, ora capisci cosa fa ogni pezzo. Tuttavia, questa è solo la punta dell'iceberg; I dispositivi null sono usati in una moltitudine di modi nella programmazione bash. Alcuni degli usi più avanzati includono il controllo dell'esistenza del file, l'automazione delle installazioni dei pacchetti ed evitare che gli script si eseguino in eccezioni indesiderate.