Eu sei que este é um post antigo, mas por que não fazer isso?
echo "hi" >> log.txt #stdout -> log
echo "hi" | tee -a log.txt #stdout -> log & stdout
echo "hi" &>> log.txt #stdout & stderr -> log
echo "hi" |& tee -a log.txt #stdout & stderr -> log & stdout
E, claro, se você quiser o stdout, poderá imprimir regularmente.
Você pode fazer isso com qualquer combinação de fluxos que desejar, apenas usando esses dois comandos básicos.
Sei que vim para cá e não obtive uma resposta fácil de entender / implementar, espero que isso ajude alguém que esteja com dificuldades.
A propósito, para noobs por aí como o meu eu anterior, tudo o que o tee
comando faz é gerar a entrada stdin para o stdout e os arquivos especificados como argumentos subsequentes. -a
significa acréscimo, para que você não sobrescreva o arquivo a cada uso do comando. Se você tiver mais perguntas, considero este um recurso muito útil para aprender rapidamente o bash.