Gestione dei file

Che cos'è /dev/null e come usarlo

Che cos'è /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 si comportano come se fossero file reali. Gli strumenti possono richiedere e alimentare dati da queste fonti. I dati sono generati dal sistema operativo invece di leggerli da un disco.

Un 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, viene utilizzato per scrivere. Qualunque cosa scrivi a /dev/null verrà scartata, dimenticata nel vuoto. È noto come dispositivo nullo in un sistema UNIX.

Perché dovresti voler gettare qualcosa nel vuoto?? Vediamo cos'è /dev/null e il suo utilizzo.

Prerequisiti

Prima di approfondire l'uso di /dev/null, dobbiamo avere una chiara comprensione del stdout e stderr flusso di dati. Dai un'occhiata a questa guida approfondita su standard, stderr, e stdout.

Facciamo un rapido aggiornamento. Ogni volta che viene eseguita un'utilità della riga di comando, genera due output. L'uscita 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 tra virgolette doppie. Qui, l'output è memorizzato in stdout.

$ echo “Ciao mondo”

Il comando successivo ci mostrerà lo stato di uscita del comando eseguito in precedenza.

$ eco $?

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

$ adfadsf
$ eco $?

Ora, dobbiamo conoscere il descrittore di file. Nell'ecosistema UNIX, questi sono valori interi assegnati a un file. Tutti e due stdout (descrittore di file = 1) e stderr (descrittore di file = 2) avere un descrittore di file specifico. Utilizzando il descrittore di file (1 e 2 in questa situazione), possiamo reindirizzare il stdout e stderr ad altri file.

Per cominciare, il seguente esempio reindirizzerà il stdout del comando echo in un file di testo. Qui, non abbiamo specificato il descrittore di file. Se non specificato, verrà utilizzato bash stdout per impostazione predefinita.

$ echo “Hello World” > log.TXT

Il seguente comando reindirizzerà il stderr in un file di testo.

$ asdfadsa 2> errore.TXT

Usando /dev/null

Reindirizzare l'output a /dev/null

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

$ grep -r ciao /sys/

Tuttavia, genererà molti errori poiché senza il privilegio di root, grep non può accedere a un numero di file. In tal caso, risulterà in errori di "Autorizzazione negata". Ora, usando il reindirizzamento, possiamo ottenere un output più chiaro.

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

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

Nell'esempio seguente, eseguiremo il ping di Google.

$ ping google.come

Tuttavia, non vogliamo vedere tutti quei risultati di ping di successo. Invece, vogliamo concentrarci solo sugli errori quando il 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 determinate situazioni, l'output potrebbe non essere affatto utile. Usando il reindirizzamento, possiamo scaricare tutto l'output nel vuoto.

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

Rompiamo un po' questo comando. Per prima cosa, scarichiamo tutti i stdout a /dev/null. Quindi, nella seconda parte, diciamo a bash di inviare stderr per stdout. In questo esempio, non c'è niente da produrre. Tuttavia, se sei confuso, puoi sempre controllare se il comando è stato eseguito correttamente.

$ eco $?

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. Tutti e due stdout e stderr verrà reindirizzato a /dev/null.

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

Altri esempi

Questo è interessante. Ricorda lo strumento dd? È un potente strumento per convertire e copiare file. Ulteriori informazioni su dd. Usando dd, possiamo testare la velocità di lettura sequenziale del tuo disco. Certo, non è una misurazione accurata. Tuttavia, per un test rapido, è piuttosto utile.

$ dd se= of=/dev/null status=progress bs=1M iflag=direct

Qui, ho usato Ubuntu 18.04.4 ISO come file grande.

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

$ wget -O /dev/null

Pensieri finali

Si spera che tu abbia una chiara comprensione di cosa sia questo file /dev/null. È un dispositivo speciale che, se scritto su di esso, scarta e se letto da, legge null. Il vero potenziale di questa interessante funzionalità è negli interessanti script bash.

Sei interessato allo scripting bash?? Dai un'occhiata alla guida per principianti allo scripting bash.

Godere!

Trackpad e puntatore del mouse su schermo AppyMouse per tablet Windows
Gli utenti di tablet spesso mancano il puntatore del mouse, soprattutto quando sono abituati a usare i laptop laptop. Gli smartphone e i tablet touchs...
Il pulsante centrale del mouse non funziona in Windows 10
Il tasto centrale del mouse ti aiuta a scorrere lunghe pagine web e schermate con molti dati. Se si ferma, finirai per usare la tastiera per lo scorri...
Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...