O texto exibido no terminal vem do stderr
stream (2). Se você fizer apenas make > build_log.txt
, somente o fluxo stdout
(1) será redirecionado para o arquivo build_log.txt
.
-
stdout
é o fluxo de saída padrão e tem o descritor de arquivo número 1. Esse é o fluxo padrão que está sendo redirecionado em shells. -
stderr
é o fluxo de erro padrão e possui o descritor de arquivo número 2
Para redirecionar também o fluxo stderr
para esse arquivo build_log.txt
, use:
make > build_log.txt 2>&1
-
make
é executado e- o fluxo
stdout
é redirecionado (>
) parabuild_log.txt
- o fluxo
stderr
é redirecionado (2>
) para o fluxostdout
(&1
), que foi redirecionado parabuild_log.txt
- o fluxo
A ordem é importante, você não pode alternar entre os operadores de redirecionamento como make 2>&1 > build_log.txt
.
Comando alternativo:
make 2>&1 | tee build_log.txt > /dev/null
O redirecionamento para /dev/null
é necessário para ocultar a saída, tee
grava sua entrada para build_log.txt
e também o gera.