script делает лог всего, что напечатано на вашем терминале. Это полезно для пользователей, которым нужна бумажная запись интерактивного сеанса в качестве доказательства проделанной работы, поскольку файл лога можно распечатать позже с помощью lpr. Если указан аргумент файла, скрипт сохраняет весь диалог в файл. Если имя файла не указано, лог сохраняется в файле с именем typescript.
script [-a] [-c command] [-e] [-f] [-q] [-t[=file]] [-V] [-h] [file]
script myfile.txt
...
exit # or when Ctrl-D
script -c "ps ax" /tmp/processes.txt
#!/bin/bash
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>log.txt 2>&1
# вывод после будет вестись в log.txt
exec 3>&1 4>&2
Сохраняет файловые дескрипторы, чтобы их можно было восстановить до того состояния, в котором они находились до перенаправления, или использовать себя для вывода того, чем они были до следующего перенаправления.
trap 'exec 2>&4 1>&3' 0 1 2 3
Восстановите файловые дескрипторы для определенных сигналов. Обычно не требуется, поскольку они должны быть восстановлены при выходе из суб-оболочки.
exec 1>log.txt 2>&1
Перенаправить stdout в файл log.txt
, затем перенаправить stderr в stdout. Обратите внимание, что порядок важен, когда вы хотите, чтобы они шли к одному и тому же файлу. stdout должен быть перенаправлен до того, как stderr будет перенаправлен на stdout.