Como posso determinar se o que um processo está produzindo é stdout ou stderr?
22
Existem apenas três maneiras que eu conheço para determinar o que um programa produzirá para STDOUT e o que STDERR
Leia a documentação. Ou
Experimente o redirecionamento †
†Por exemplo:
program > program.stdout 2> program.stderr
Em seguida, observe os dois arquivos de saída para ver o que o programa gravou em STDOUT e o que gravou em STDERR.
Em vez do redirecionamento, você pode canalizar tee
se precisar de saída para continuar na tela e também em um arquivo. Consulte /programming//q/692000/477035
program | grep .
imprime STDOUT em vermelho.Com base no seu pedido comentado:
fonte
stdout
e 2 =stderr
) para obter a saída do conjunto interno de colchetes e executarstdout
umsed
comando, enquantostderr
percorre um diferente.{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
Você pode apenas redirecionar o stderr para um arquivo e, se algo aparecer nele, é do stderr.
por exemplo
ls -a 2> ls-all.txt
se, por algum motivo, houver um erro enviado ao stderr, ele será redirecionado para este arquivo.
fonte
Se você quiser fazer isso uma vez, redirecione um deles para outro lugar.
Exemplo, redirecionando o padrão com
>
.ls -al> ls-l.txt (qualquer saída aqui não é do stdout, se você vê alguma coisa, deve ser a saída stderr)
Para redirecionamento stderr, use
2>
fonte