Есть ли простой способ регистрировать все действия, выполняемые сценарием оболочки?

Есть ли простой способ зарегистрировать все действия, происходящие из сценария оболочки, в файл?

У меня есть скрипт. Он выводит такие вещи, как «инструкции» эха, а также другой выход программы. Я знаю команды:

command | tee -a "$log_file"

и

command >> logifle.log

Я спрашиваю, есть ли параметр оболочки для ведения журнала или команда набора, которую я могу использовать или что-то еще как это. Я не обязательно хочу добавлять десятки редиректов или тройников в файлы, если мне это не нужно. Я все еще хочу получить вывод std, хотя я просто хочу, чтобы он был зарегистрирован .:wq

1
задан 31 July 2015 в 00:55

1 ответ

Существует очень простой и удобный способ:

Используя 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. (Большинство оболочек автоматически устанавливают эту переменную).
18
ответ дан 23 May 2018 в 18:38
  • 1
    @Fabby Мне нравится мой ответ, но я не вижу серого цвета;) – A.B. 30 July 2015 в 20:43
  • 2
    Я использую script logfilename, поэтому я могу его выбрать. – waltinator 30 July 2015 в 23:23
  • 3
    я могу вызвать " скрипт " из моей программы оболочки? – j0h 31 July 2015 в 00:24
  • 4
    Это не имеет смысла, см. Мой улучшенный ответ. – A.B. 31 July 2015 в 08:05
  • 5
    Я хотел бы запустить команду из скрипта, я посмотрю сценарий этим вечером. – j0h 5 August 2015 в 00:30

Другие вопросы по тегам:

Похожие вопросы: