Я знаю, что это старый пост, но почему бы просто не сделать это?
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
И, конечно, если вы хотите стандартный вывод, вы можете просто печатать регулярно.
Вы можете сделать это с любой комбинацией потоков, которую вы пожелаете, просто используя эти две основные команды.
Я знаю, что пришел сюда и не получил легкого для понимания / реализации ответа, надеюсь, это поможет кому-то еще, кто борется.
Между прочим, для noobs, как и мой предыдущий self, все, что tee
делает команда, это выводит ввод stdin как в stdout, так и в файл (ы), указанные в качестве последующих аргументов. -a
означает добавление, поэтому вы не перезаписываете файл при каждом использовании команды. Если у вас есть дополнительные вопросы, я считаю , это будет очень полезным ресурсом для быстрого обучения Баша.