Cosa è /dev /null e come usarlo

Cosa è /dev /null e come usarlo
Linux è un sistema operativo interessante che ospita alcuni dispositivi virtuali per numerosi scopi. Per quanto riguarda i programmi in esecuzione nel sistema, questi dispositivi virtuali agiscono come se fossero file reali. Gli strumenti possono richiedere e alimentare i dati da queste fonti. I dati sono generati dal sistema operativo invece di leggerli da un disco.

Uno di questi esempio è /dev /null. È un file speciale presente in ogni singolo sistema Linux. Tuttavia, a differenza della maggior parte degli altri file virtuali, invece di leggere, è usato per scrivere. Qualunque cosa tu scriva /dev /null verrà scartato, dimenticato nel vuoto. È noto come il dispositivo null in un sistema UNIX.

Perché vorresti scartare qualcosa nel vuoto? Controlliamo cosa è /dev /null e il suo utilizzo.

Prerequisiti

Prima di immergerti in profondità nell'uso di /dev /null, dobbiamo avere una chiara comprensione del stdout E Stderr flusso di dati. Dai un'occhiata a questa guida approfondita stdin, Stderr, E stdout.

Facciamo un rapido aggiornamento. Ogni volta che viene eseguita un'utilità della riga di comando, genera due output. L'output va a stdout e l'errore (se generato) va a Stderr. Per impostazione predefinita, entrambi questi flussi di dati sono associati al terminale.

Ad esempio, il seguente comando stamperà la stringa all'interno del marchio di doppia citazione. Qui, l'output è archiviato in stdout.

$ echo "ciao mondo"

Il comando successivo ci mostrerà lo stato di uscita del comando precedentemente gestito.

$ echo $?

Poiché il comando precedente eseguiva correttamente, lo stato di uscita è 0. Altrimenti, lo stato di uscita sarà diverso. Cosa succede quando provi a eseguire un comando non valido?

$ ADFADSF
$ echo $?

Ora, dobbiamo conoscere il descrittore dei file. Nell'ecosistema UNIX, questi sono valori interi assegnati a un file. Entrambi stdout (Descrittore di file = 1) e Stderr (Descrittore di file = 2) Avere un descrittore di file specifico. Usando il descrittore di file (1 e 2 in questa situazione), possiamo reindirizzare il stdout E Stderr ad altri file.

Per antipasto, il seguente esempio reindirizzerà il stdout del comando Echo a un file di testo. Qui, non abbiamo specificato il descrittore dei file. Se non specificato, Bash utilizzerà stdout Per impostazione predefinita.

$ echo "ciao mondo"> registro.TXT

Il seguente comando reindirizzerà il Stderr a un file di testo.

$ ASDFADSA 2> Errore.TXT

Usando /dev /null

Reindirizzamento dell'output a /dev /null

Ora, siamo pronti a imparare a usare /dev /null. Innanzitutto, controlliamo come filtrare l'output e l'errore normali. Nel comando seguente, Grep proverà a cercare una stringa (ciao, in questo caso) nella directory "/sys".

$ grep -r ciao /sys /

Tuttavia, genererà un sacco di errore poiché senza privilegio di root, Grep non può accedere a un numero di file. In tal caso, si tradurrà in errori "autorizzazione negata". Ora, usando il reindirizzamento, possiamo ottenere un output più chiaro.

$ grep -r ciao /sys /2> /dev /null

L'output sembra molto meglio, giusto? Niente! In questo caso, Grep non ha accesso a molti file e quelli che sono accessibili non hanno la stringa "ciao".

Nel seguente esempio, faremo ping Google.

$ ping Google.com

Tuttavia, non vogliamo vedere tutti quei risultati di ping di successo. Invece, vogliamo concentrarci solo sugli errori quando Ping non è riuscito a raggiungere Google. Come lo facciamo?

$ ping Google.com 1> /dev /null

Qui, il contenuto di stdout vengono scaricati in /dev /null, lasciando solo gli errori.

Reindirizza tutto l'output a /dev /null

In alcune situazioni, l'output potrebbe non essere affatto utile. Usando il reindirizzamento, possiamo scaricare tutta l'uscita nel vuoto.

$ grep -r ciao /sys /> /dev /null 2> & 1

Rompi un po 'questo comando. Innanzitutto, stiamo scaricando tutto il stdout a /dev /null. Quindi, nella seconda parte, stiamo dicendo a bash di inviare Stderr A stdout. In questo esempio, non c'è nulla da output. Tuttavia, se sei confuso, puoi sempre verificare se il comando è stato eseguito correttamente.

$ echo $?

Il valore è 2 perché il comando ha generato molti errori.

Se tendi a dimenticare il descrittore di file di stdout E Stderr, Il seguente comando andrà bene. È un formato più generalizzato del comando precedente. Entrambi stdout E Stderr verrà reindirizzato a /dev /null.

$ grep -r ciao /sys /&> /dev /null

Altri esempi

Questo è interessante. Ricorda lo strumento DD? È uno strumento potente per convertire e copiare i file. Scopri di più su DD. Usando DD, possiamo testare la velocità di lettura sequenziale del tuo disco. Certo, non è una misurazione accurata. Tuttavia, per un breve test, è abbastanza utile.

$ dd if = di =/dev/null status = progresso bs = 1m iflag = direct

Qui, ho usato l'Ubuntu 18.04.4 ISO come grande file.

Allo stesso modo, puoi anche testare la velocità di download della tua connessione Internet.

$ wget -o /dev /null

Pensieri finali

Spero che tu abbia una chiara comprensione di cosa sia questo file /dev /null. È un dispositivo speciale che, se scritto ad esso, scarta e se letto, legge Null. Il vero potenziale di questa caratteristica interessante è in interessanti script bash.

Sei interessato a Bash Scripting? Dai un'occhiata alla guida per principianti agli script bash.

Godere!