Могу ли я настроить bash на Linux для записи копии всех stdout и stderr в обычный файл без указания перенаправления для каждой команды?Может ли stdout, stderr всегда обращаться к регулярному файлу?
Спасибо, Kent
Могу ли я настроить bash на Linux для записи копии всех stdout и stderr в обычный файл без указания перенаправления для каждой команды?Может ли stdout, stderr всегда обращаться к регулярному файлу?
Спасибо, Kent
Вы можете использовать script
, чтобы создать журнал вашей оболочки сессии
Если вы пишете сценарий, я рекомендовал бы написать функцию оболочки и перенаправить вывод. Тогда вам не придется перенаправлять каждую команду этой функции. В любом случае, я вряд ли вижу какой-либо смысл в перенаправлении в интерактивной оболочке.
Команда exec
, если не задана команда для выполнения, применит свои переадресации к текущей оболочке. Однако в моем тестировании это, похоже, не так хорошо работает для труб. Я бы предложил использовать подоболочку, которую вы можете перенаправить нормально.
(
echo hello
echo hello err >&2
) 2>&1 | tee logfile.txt
Если вам нужно только расшифровку, а не непрерывный тройник, exec >& logfile
может работать.
Кроме того, традиционный трюк заключается в использовании удаленного входа в систему (ssh или telnet), подключенного к тройнику, для создания журнала интерактивного сеанса. screen также поддерживает ведение журнала.
Я был рад найти bash 4.1 предлагает писать историю команд в syslog. Я надеюсь на этот уровень удобства при протоколировании вывода и сообщений об ошибках. – ktenney