Che cosa significa 2 / dev / null?

160

Vorrei una breve spiegazione della seguente riga di comando:

grep -i 'abc' content 2>/dev/null 
    
posta Naive 26.09.2013 - 10:21

3 risposte

237

Il & gt; l'operatore reindirizza di solito l'output su un file ma può essere indirizzato a un dispositivo. Puoi anche utilizzare & gt; & gt; aggiungere.

Se non si specifica un numero, si presuppone il flusso di output standard, ma è anche possibile reindirizzare gli errori

> file reindirizza stdout al file
1> file reindirizza stdout al file
2> file reindirizza stderr al file
&> file reindirizza stdout e stderr al file

/dev/null è il dispositivo nullo che prende qualsiasi input desiderato e lo getta via. Può essere usato per sopprimere qualsiasi output.

    
risposta data Warren Hill 26.09.2013 - 10:38
16

In breve, reindirizza lo stderr (fd 2) nel buco nero (scarta l'output del comando).

Alcuni casi d'uso più comuni per il reindirizzamento:

command > /dev/null 2>&1 &

Esegui command in background, scarta stdout e stderr

command >> /path/to/log 2>&1 &

Esegui command e aggiungi stdout e stderr a un file di registro.

    
risposta data Terry Wang 26.09.2013 - 10:32
6

/dev/null è considerato un buco nero in Linux / Unix, quindi puoi inserire qualsiasi cosa in questo, ma non sarai in grado di recuperarlo da /dev/null .

Inoltre, 2> significa che stai reindirizzando (cioè > ) lo stderr (cioè 2 ) nel buco nero (cioè /dev/null )

Il tuo comando è:

grep -i 'abc' content 2>/dev/null 

Non provare a finire con un'altra barra in avanti come questa - 2>/dev/null/ (non è una directory).

    
risposta data Indrajeet Gour 11.06.2015 - 12:57
-3

Questo comando di grep ha una sintassi sbagliata, dovrebbe essere qualcosa come

grep -ri content /support/security/bulletins/ 2> /dev/null

e il 2 & gt; / dev / null significa reindirizzare tutti gli errori prodotti da questo comando a / dev / null, ovvero eliminarli e non visualizzarli sullo schermo (o dove sta attualmente puntando il descrittore del file di errore standard). / dev / null è un file che quando si scrivono dati non vanno da nessuna parte.

    
risposta data sivann 26.09.2013 - 10:31

Leggi altre domande sui tag