Иногда требуется записать все, что вы вводите в терминале, для того чтобы самому запомнить, что и как делали или передать кому-то другому для анализа или обучения, или просто записать терминальную сессию вместо записи видео с захватом экрана. В сегодняшней статье мы рассмотрим, как использовать команды script и scriptreplay, чтобы сохранить полный лог вашей работы за терминалом, включая вывод консоли. Программа scripts записывает ваши действия в консоли, а scriptreplay проигрывает.
Синтаксис script
script [options] - -timing=timing_file log_filename
Примеры использования команды script
Чтобы начать запись в терминале Linux, введем следующую команду:
script history_log.txt
Теперь выполним несколько команд, чтобы script записал результат их работы.

Чтобы остановить запись script вводим exit и нажимаем [Enter].

Теперь с помощью редактора можно посмотреть, что записалось.
nano history_log.txt
Если вы хотите продолжить записывать, не стирая предыдущее содержимое, можете использовать опцию ‘-a‘
script -a history_log.txt
Останавливаем и смотрим записанные действия.
nano history_log.txt

Чтобы записывать тайминг, команды и результат, выполним следующую команду:
script -t 2>timing.txt history_log.txt
Опция -t записывает тайминг (синхронизацию) в файл timing.txt, что позволяет сохранить временной интервал между выводами текста на экран. В файл history_log.txt сохраняются сами команды и результат их работы.

Теперь вы можете просмотреть применяемые команды в history_log.txt и синхронизацию команд в timing.txt.
nano history_log.txt nano timing.txt
Для воспроизведения записанных команд используем команду scriptreplay.
scriptreplay timing.txt history_log.txt
Если вы захотите ускорить процесс воспроизведения, то просто пропишите, во сколько раз нужно ускорить воспроизведение.
scriptreplay timing.txt history_log.txt 5
Записанные файлы можно передать кому-либо и воспроизвести в другом терминале.
Подведем итоги. Эти программы хорошо подойдут, если нужно кому-то показать, как должно выглядеть то или иное действие в терминале, сохранить историю действий или что-то отладить.
Если вы в статье нашли ошибки или несоответствия, мы будем благодарны, если вы напишите нам о них в комментариях.