Determina se a saída é stdout ou stderr

19

Como posso determinar se o processo está saindo como stdout ou stderr?

    
por Rauffle 26.07.2012 / 00:41

4 respostas

20

Existem apenas três maneiras que eu conheço para determinar o que um programa produzirá para STDOUT e o que STDERR

  1. Leia a documentação. Ou

  2. Experiência com redirecionamento †

  3. imprime STDERR em vermelho

† Por exemplo:

program > program.stdout 2> program.stderr

Em seguida, observe os dois arquivos de saída para ver o que o programa gravou no STDOUT e o que ele gravou no STDERR.

Em vez de redirecionamento, você pode canalizar para tee se precisar de saída para continuar na tela, bem como em um arquivo. Consulte o link

    
por 26.07.2012 / 00:53
5

Com base na sua solicitação comentada:

{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
    
por 26.07.2012 / 01:12
0

Se você quiser fazer isso uma vez, redirecione um deles para outro lugar.

Exemplo, redirecionando o padrão para fora com > .

ls -al > ls-l.txt (qualquer saída aqui não é do stdout, se você ver alguma coisa, deve ser stderr)

Para redirecionamento de stderr use 2>

    
por 26.07.2012 / 00:44
0

Você poderia apenas redirecionar o stderr para um arquivo e se algo aparecer nele, é do stderr.

por exemplo. ls -a 2> ls-all.txt

se houver algum erro por qualquer motivo enviado ao stderr, ele será redirecionado para este arquivo.

    
por 06.09.2014 / 14:58