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!