Есть ли простой способ зарегистрировать все действия, происходящие из сценария оболочки, в файл?
У меня есть скрипт. Он выводит такие вещи, как «инструкции» эха, а также другой выход программы. Я знаю команды:
command | tee -a "$log_file"
и
command >> logifle.log
Я спрашиваю, есть ли параметр оболочки для ведения журнала или команда набора, которую я могу использовать или что-то еще как это. Я не обязательно хочу добавлять десятки редиректов или тройников в файлы, если мне это не нужно. Я все еще хочу получить вывод std, хотя я просто хочу, чтобы он был зарегистрирован .:wq
Существует очень простой и удобный способ:
Используя script, чтобы сделать машинописный ввод терминального сеанса
Запустить команду script Если задан аргумент file , например script ~/tmp/output, script сохраняет диалог в этом файле. Если имя файла не указано, диалог сохраняется в файле typescript. Запустите свой скрипт или что вы хотите запустить. Если ваш скрипт закончен, остановите script с помощью Ctrl-D. Проверьте вывод в выходном файле по умолчанию typescriptЧтобы запустить вашу команду за один шаг с помощью script, используйте параметр -c
-c COMMAND
Run the COMMAND rather than an interactive
shell. This makes it easy for a script to capture
the output of a program that behaves differently
when its stdout is not a tty.
Использование script внутри вашего скрипта не имеет смысла, потому что script разворачивает оболочку или запускает новую оболочку.
Если переменная SHELL существует, оболочка, раздвоенная скриптом, будет этой оболочкой. Если SHELL не установлен, предполагается оболочка Bourne. (Большинство оболочек автоматически устанавливают эту переменную).