Я хочу, чтобы фактическая командная строка была зарегистрирована вместе с ее выводом.
Я обычно выполняю важные команды, подобные этой:
PERL5LIB=${PERL5LIB}:/something/extra my-command.pl many arguments which I want to save 2>&1 | tee -a my-command.log
Теперь my-command.log
содержит как stdout
и stderr
из my-command.pl
.
Тем не менее, он не содержит фактической командной строки выше.
Я знаю о файле истории bash
; так что, я думаю, я мог бы скопировать оттуда (или из терминала) вручную, но это, конечно, не очень хорошее решение.
Я думаю, я мог бы написать функцию оболочки, которая будет принимать командную строку, выводить ее и затем выполнять, но тогда мне придется иметь дело с адом цитирования.
Я попытался set -v
но это, кажется, игнорирует перенаправление.
script
сохраняет командную строку (но только если я запускаю новую оболочку, а не с -c
), но он не работает в буфере взаимодействия с оболочкой emacs и также сохраняет приглашение оболочки - включая escape-последовательности! - к его лог-файлу, поэтому он неоптимален.