2>&1 >output.log
significa primeiro iniciar enviando todo o arquivo manipular 2 coisas (erro padrão) para o identificador de arquivo 1 (saída padrão) então envia para o arquivo output.log
. Em outras palavras, envie um erro padrão e uma saída padrão para o arquivo de log.
2>&1 | tee output.log
é o mesmo com o 2>&1
bit, combina saída padrão e erro padrão no fluxo de saída padrão. Em seguida, ele canaliza isso por meio do programa tee
, que enviará sua entrada padrão para sua saída padrão (como cat
) e também para o arquivo. Por isso, combina os dois fluxos (erro e saída) e, em seguida, envia isso para o terminal e o arquivo.
A linha inferior é que o primeiro envia stderr
/ stdout
para o arquivo, enquanto o segundo envia para ambos o arquivo e saída padrão (que é provavelmente o terminal, a menos que você esteja dentro de outra construção que redirecionou a saída padrão).
Eu menciono essa última possibilidade porque você pode ter coisas como:
(echo hello | tee xyzzy.txt) >plugh.txt
onde nada acaba no terminal.