O que a saída para / dev / null faz nos scripts bash?

87

Muitas vezes eu corro em pequenos scripts bash que usam esse tipo de sintaxe em declarações if:

some command > /dev/null 2>&1

Qual é o propósito de exibir /dev/null , e o que significa 2>&1 ?

Parece sempre funcionar, mas eu gostaria de saber o que está fazendo.

    
por javanix 08.11.2010 / 15:20

2 respostas

119

>/dev/null redireciona a saída padrão do comando para o dispositivo nulo, que é um dispositivo especial que descarta as informações gravadas nele

2 >&1 redireciona o fluxo de erro padrão para o fluxo de saída padrão (stderr = 2, stdout = 1).

Na prática, evita que qualquer saída do comando (stdout e stderr) seja exibida. É usado quando você não se importa com a saída do comando.

    
por João Pinto 08.11.2010 / 15:31
48

STDIN é representado por 0, STDOUT por 1 e STDERR por 2.

/ dev / null é o bit-bucket: o lugar onde você despeja qualquer coisa que você não precisa.

Assim, o STDOUT é redirecionado para o bucket de bits (lixo) e o STDERR é redirecionado para onde o STDOUT está localizado: o bucket de bits.

Você também pode fazer isso:

>/dev/null 2>/dev/null
    
por Sid 08.11.2010 / 15:59