Capturando STDERR e STDOUT para arquivar usando tee

8

Não estou claro qual é a melhor ordem para capturar STDERR e STDOUT no mesmo arquivo usando tee . Eu sei que se eu quiser canalizar para um arquivo eu tenho que mapear o filehandle após o redirecionamento, ou seja,

find . >/tmp/output.txt 2>&1

Isso instrui o shell a enviar STDOUT para /tmp/output.txt e enviar STDERR para STDOUT (que agora está enviando para /tmp/output.txt ).

A tentativa de executar o 2>&1 antes de redirecionar o arquivo não terá o efeito desejado.

No entanto, quando eu quiser enviar pipe usando tee , ele deve ser:

find . |tee /tmp/output.txt 2>&1   # or
find . 2>&1 |tee /tmp/output.txt   # ?
    
por PP. 12.11.2010 / 09:44

1 resposta

10

O último; Isso garante que STDOUT e STDERR do comando original vão para o mesmo fd, então os alimenta em conjunto no tee. No primeiro caso, é o STDERR do comando tee que você estaria se juntando ao seu STDOUT.

    
por 12.11.2010 / 09:47