Существует ли простой способ зарегистрировать все действие, которое происходит от сценария оболочки до файла?
У меня есть сценарий. Это производит вещи как эхо "инструкции", а также другой вывод программы. Я знаю команды:
command | tee -a "$log_file"
и
command >> logifle.log
То, что я спрашиваю, - существует ли параметр оболочки для входа, или набор управляет, чтобы я мог использовать или что-то как этот. Я не обязательно хочу добавить десятки перенаправлений или мишени в файлы, если я не имею к. Я все еще хочу произвести станд., хотя - я просто также хочу, чтобы он был зарегистрирован.:wq
если Вы обычно запускаете свой скрипт с foo.sh
, попытайтесь выполнить его (предположение, что это - сценарий удара) с bash -x foo.sh
. Если Вы хотите все перенаправленное в файл, попробуйте bash -x foo.sh > file.log 2>&1
(обратите внимание, что я перенаправляю stderr также, удаляю 2>&1
, если Вы не хотите это). Если Вы также хотите видеть то, что продолжается, bash -x foo.sh 2>&1 | tee log.file
.
Существует очень легкий и удобный путь:
Используя 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 принята. (Большинство оболочек устанавливает эту переменную автоматически).