GNU/Linux >> Linux Esercitazione >  >> Linux

Come reindirizzare l'output su /dev/null in Linux

In Linux, i programmi sono molto comunemente accessibili utilizzando la riga di comando e l'output, in quanto tale, viene visualizzato sullo schermo del terminale. L'output è composto da due parti:STDOUT (Uscita standard ), che contiene registri di informazioni e messaggi di successo, e STDERR (Errore standard ), che contiene messaggi di errore.

Molte volte, l'output contiene molte informazioni che non sono rilevanti e che utilizzano inutilmente le risorse di sistema. Soprattutto nel caso di script di automazione complessi, dove ci sono molti programmi in esecuzione uno dopo l'altro, il registro visualizzato è enorme.

In questi casi, possiamo utilizzare lo pseudo-dispositivo file '/dev/null 'per reindirizzare l'output. Quando l'output viene reindirizzato a /dev/null , viene immediatamente scartato e quindi non avviene alcun utilizzo delle risorse.

Vediamo come reindirizzare l'output a /dev/null in Linux.

Prendiamo un esempio del comando mv che tenta di spostare due file in una directory particolare, dove un file è stato spostato correttamente (visualizza STDOUT ) e l'altro restituisce un errore durante lo spostamento (visualizza STDERR ).

$ mv -v tmp.c /etc/apt/sources.list /tmp

Nota :Il '-v' argomento a mv visualizza il registro di successo quando un file viene spostato. Senza la bandiera, non viene stampato nulla su STDOUT .

Ora, per reindirizzare solo STDOUT su /dev/null , ovvero per eliminare lo standard output, utilizzare quanto segue:

$ mv -v tmp.c /etc/apt/sources.list /tmp 1>/dev/null

Cosa significa "1>/dev/null"?

Qui '1' indica STDOUT , che è un intero standard assegnato da Linux per lo stesso. L'operatore '>' , chiamato operatore di reindirizzamento, scrive i dati in un file. Il file specificato in questo caso è /dev/null . Quindi, i dati vengono infine scartati.

Se è stato fornito un altro file invece di /dev/null , l'output standard sarebbe stato scritto in quel file.

Allo stesso modo, per reindirizzare solo STDERR su /dev/null , usa il numero intero '2' invece di '1' . Il numero intero '2' sta per errore standard.

$ mv -v tmp.c /etc/apt/sources.list /tmp 2>/dev/null

Come puoi vedere, l'errore standard non viene visualizzato sul terminale ora poiché viene eliminato in /dev/null .

Infine, per eliminare entrambi gli STDOUT e STDERR allo stesso tempo, utilizzare quanto segue:

$ mv -v tmp.c /etc/apt/sources.list /tmp &>/dev/null

Il carattere e commerciale ('&') denota che sia l'output standard che l'errore standard devono essere reindirizzati a /dev/null e scartato. Quindi, nell'ultimo screenshot, non vediamo alcun output stampato sullo schermo.

Conclusione

In questo articolo, abbiamo visto come reindirizzare l'output a /dev/null . Lo stesso può essere utilizzato in entrambi i comandi o in complessi script Bash che generano una grande quantità di log. Nel caso in cui lo script necessiti di debugging o debba essere testato; in questi casi, il log è necessario per visualizzare e analizzare correttamente gli errori.

Tuttavia, nei casi in cui l'output è già noto e anticipato, può essere eliminato con /dev/null . Se hai domande o feedback, faccelo sapere nei commenti qui sotto!


Linux
  1. Come sostituire un disco rigido guasto nel software RAID Linux

  2. Cosa sono i file /dev/zero e /dev/null in Linux

  3. Come codificare in base64 /dev/random o /dev/urandom?

  4. Come reindirizzare /dev/urandom all'output audio di Linux?

  5. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0

Che cos'è "/dev/null 2&1" in Linux

Che cos'è /dev/null in Linux

Quanto sono portatili /dev/stdin, /dev/stdout e /dev/stderr?

Come silenziare completamente un Cronjob in /dev/null/?

Linux – Come creare /dev/null?

/dev/null in Linux