Cosa esegue l'output su / dev / null negli script di bash? [duplicare]

94

Spesso mi imbatto in piccoli script di bash che usano questo tipo di sintassi nelle istruzioni if:

some command > /dev/null 2>&1

Qual è lo scopo dell'output a /dev/null come quello, e cosa significa 2>&1 ?

Sembra sempre funzionare, ma mi piacerebbe sapere cosa sta facendo.

    
posta javanix 08.11.2010 - 15:20

2 risposte

126

>/dev/null reindirizza il comando standard output al dispositivo null, che è un dispositivo speciale che scarta le informazioni scritte su di esso

2 >&1 reindirizza il flusso di errori standard al flusso di output standard (stderr = 2, stdout = 1).

In pratica impedisce l'eventuale visualizzazione di qualsiasi output dal comando (sia stdout che stderr). Viene utilizzato quando non ti interessa l'output del comando.

    
risposta data João Pinto 08.11.2010 - 15:31
52

STDIN è rappresentato da 0, STDOUT di 1 e STDERR di 2.

/ dev / null è il bit-bucket: il luogo in cui si esegue il dump di tutto ciò che non è necessario.

Quindi, lo STDOUT viene reindirizzato al bit-bucket (cestino) e STDERR viene reindirizzato a dove si trova STDOUT: il bit-bucket.

Puoi anche fare questo:

>/dev/null 2>/dev/null
    
risposta data Sid 08.11.2010 - 15:59

Leggi altre domande sui tag