Questão O que significa 2> / dev / null?


Eu gostaria de uma breve explicação da seguinte linha de comando:

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

151
2017-09-26 08:21


origem




Respostas:


O operador> redireciona a saída normalmente para um arquivo, mas pode ser para um dispositivo. Você também pode usar >> para acrescentar.

Se você não especificar um número, o fluxo de saída padrão será assumido, mas você também poderá redirecionar os erros

> file redireciona stdout para arquivo
1> file redireciona stdout para arquivo
2> file redireciona stderr para arquivo
&> file redireciona stdout e stderr para arquivo

/dev/null é o dispositivo nulo que leva qualquer entrada que você quer e joga fora. Pode ser usado para suprimir qualquer saída.


221
2017-09-26 08:38



existe uma diferença entre > /dev/null 2>&1 e &> /dev/null - Alexander Mills
Na prática hoje eu não acho que haja 2>&1 é uma sintaxe mais antiga assim &> não teria trabalhado anos atrás, mas ambos são equivalentes. - Warren Hill


Em suma, ele redireciona stderr (fd 2) para o buraco negro (descarta a saída do comando).

Alguns casos de uso mais comuns para redirecionamento:

command > /dev/null 2>&1 &

Corre command no fundo, descartar stdout e stderr

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

Corre command e acrescente stdout e stderr a um arquivo de log.


16
2017-09-26 08:32



Existe uma boa razão para usar > /dev/null 2>&1 ao invés de &> /dev/null? - Craig McQueen
@CraigMcQueen &> é novo no Bash 4, o primeiro é apenas a maneira tradicional, estou tão acostumado a isso (fácil de lembrar). - Terry Wang


/dev/null é tratado como um buraco negro no Linux / Unix, então você pode colocar qualquer coisa nisso, mas você não será capaz de recuperá-lo /dev/null.

Mais distante, 2> significa que você está redirecionando (ou seja, >) o stderr (isto é, 2) no buraco negro (ou seja, /dev/null)

Seu comando é:

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

Não tente terminar com outra barra como esta - 2>/dev/null/ (não é um diretório).


5
2018-06-11 10:57