Я хочу, чтобы фактическая командная строка была зарегистрирована вместе с ее выводом.
Я обычно выполняю важные команды, подобные этой:
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-последовательности! - к его лог-файлу, поэтому он неоптимален.
