Respostas:
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
Com base no seu pedido comentado:
{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
stdout
e 2 = stderr
) para obter a saída do conjunto interno de colchetes e executar stdout
um sed
comando, enquanto stderr
percorre um diferente.
{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
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>
program | grep .
imprime STDOUT em vermelho.