No Unix (e outros), normalmente há dois fluxos de saída que você deseja usar, STDOUT e STDERR. Ambos são fluxos padrão .
Com >
, você só redireciona STDOUT para um arquivo.
Com 2>
você redireciona STDERR para um arquivo (o "2" porque seu descritor de arquivo é "2").
Na verdade, também há STDIN, que você pode redirecionar com <
. Este gráfico mostra como eles normalmente interagem.
Como as mensagens de erro devem sempre ser impressas no STDERR (e a maioria dos programas respeita isso), tente algo ao lado para separar a saída normal e a saída de erro:
command > normal.log 2> err.log
Da mesma forma, você pode redirecionar STDERR para STDOUT.
command 2>&1 > out.log
Como uma forma abreviada, você também pode redirecionar tudo para um arquivo imediatamente - pelo menos com os mais shells. Não confie nisso para portabilidade.
command &> out.log