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.