O que é o Stderr?

O Stderr, também conhecido como erro padrão, é o descritor de arquivo padrão no qual um processo pode gravar mensagens de erro.

Em sistemas operacionais do tipo Unix, como Linux, macOS X e BSD, o stderr é definido pelo padrão POSIX. Seu número descritor de arquivo padrão é 2 .

No terminal, o erro padrão é padronizado para a tela do usuário.

Stderr na linha de comando do Linux

No bash, o erro padrão pode ser redirecionado na linha de comando. Redirecionar stderr pode ser útil se você precisar capturar qualquer mensagem de erro em um arquivo de log separado ou ocultar as mensagens de erro completamente.

Por exemplo, considere o seguinte comando find :

 encontrar / -iname '* alguma coisa *' 
 / usr / share / doc / alguma coisa / usr / share / doc / alguma coisa / examples / something_random find: `/ run / udisks2 ': Permissão negada find:` / run / wpa_supplicant': Permissão negada / usr / share / alguma coisa / usr / games / something 

Estamos recebendo erros porque o find está tentando pesquisar alguns diretórios do sistema que não temos permissão para ler. As linhas que dizem "Permissão negada" são mensagens de erro e foram gravadas no stderr . As outras linhas foram escritas para stdout (saída padrão). Por padrão, ambos são exibidos no terminal.

Para ocultar o stderr, podemos redirecioná-los referenciando o número do descritor de arquivo do erro padrão, 2, e um operador "redirect output", > .

 find / -iname '* alguma coisa *' 2> / dev / null 
 / usr / share / doc / alguma coisa / usr / share / doc / alguma coisa / examples / something_random / usr / share / alguma coisa / usr / games / something 

Os erros não são mais exibidos, porque todas as saídas para stderr foram redirecionadas para / dev / null, o dispositivo especial no Linux que "não leva a nada".

Nós também podemos redirecionar todos os erros para um arquivo:

 encontrar / -iname '* alguma coisa *' 2> output.txt 
 / usr / share / doc / alguma coisa / usr / share / doc / alguma coisa / examples / something_random / usr / share / alguma coisa / usr / games / something 

Agora, se você catar o conteúdo de output.txt, verá as mensagens de erro salvas lá:

 gato output.txt 
 find: `/ run / udisks2 ': Permissão negada find:` / run / wpa_supplicant': Permissão negada 

Para obter informações detalhadas sobre como redirecionar fluxos de dados, consulte o redirecionamento no bash.

Mensagem de erro, termos do sistema operacional