Как записывать команды терминала Linux с помощью «скрипта» — CloudSavvy IT

Иллюстрация, показывающая экран терминала LinuxФатмавати ачмад заэнури

В команда сценария позволяет записывать и воспроизводить действия в вашем терминале. Это полезно, когда вы хотите создать справочник о предпринятых вами шагах или создать учебное пособие для других.

script выводит машинописный текст всех выполненных вами команд. Он работает, помещая вас во вспомогательную оболочку, которая регистрирует все, что вы выполняете. Когда вы покинете оболочку, ваш сеанс будет сохранен как обычный текст. Это делает сценарий более надежным, чем перенаправленные входные потоки.

Основное использование

Команду скрипта можно запустить без аргументов:

сценарий

Начнется новый сеанс захвата. Ваш сеанс терминала будет сохранен в ./typescript в вашем рабочем каталоге. Вы можете указать другой файл, указав аргумент скрипту:

сценарий example_session

Используйте свою оболочку для выполнения последовательности команд, которую вы хотите записать. Когда вы закончите, нажмите Ctrl + D или введите exit, чтобы выйти из вспомогательной оболочки. Вы вернетесь к своему основному сеансу оболочки.

Теперь вы можете проверить созданный журнал сеанса:

кошка example_session

Вы увидите, что результат сеанса скрипта перемежается аннотациями в квадратных скобках. Эти аннотации используются сценарием для записи сведений о самом терминале и событиях, которые в нем происходят.

Поскольку файлы журналов представляют собой простой текст, вы можете свободно манипулировать ими в своем любимом редакторе. Просто вырежьте те линии, которые вы не хотите сохранять или которые не должны видеть другие.

Это полезно, если ваш сеанс непреднамеренно выводит потенциально конфиденциальную информацию или вы хотите удалить из журнала посторонние символы. script записывает все, что происходит в вашем терминале, включая нажатие клавиши Backspace, новые строки и управляющие символы, некоторые из которых могут не понадобиться в окончательном машинописном тексте.

script выдает имя файла, в который он записывает, в начале и в конце вашего сеанса. Вы можете отключить этот вывод, добавив флаг -q для включения тихого режима.

Переменная среды SHELL считывается при определении оболочки для разветвления для внутреннего процесса. Если переменная не задана, скрипт по умолчанию будет sh.

Добавление к существующему файлу

К существующему машинописному тексту можно добавлять новые команды. Это позволяет вам «приостанавливать» и «возобновлять» запись, выйдя из вспомогательной оболочки и начав новый сеанс.

Добавьте флаг -a, чтобы добавить свои команды в указанный файл. сценарий перезапишет содержимое файла, если флаг не установлен.

скрипт -a example_session

Добавление данных о времени

Базовый машинописный текст идеален, когда вы просто хотите записать свои шаги для последующего чтения или обмена. Скрипт также может сохранять данные о времени вместе со своим текстовым журналом. Эта информация может использоваться для воспроизведения всего сеанса терминала с соответствующими задержками между командами.

Запустите сценарий с флагом -t, чтобы указать путь для записи времени. Файлы хронометража имеют формат с двумя столбцами. Каждая запись содержит время, прошедшее с момента последней записи в первом столбце. Во втором столбце записывается количество набранных символов, что обеспечивает точное воспроизведение скорости набора.

скрипт -q -t example_session_timings example_session

Воспроизведение сеансов

Команда scriptreplay считывает машинописные тексты и файлы синхронизации, созданные сценарием. Он воспроизводит их вывод в вашем терминале. Данные синхронизации будут использоваться для сопоставления продолжительности каждого набранного символа с его длиной в исходной последовательности команд.

scriptreplay -t example_session_timings example_session

Некоторые машинописные тексты могут содержать нежелательные задержки или работать с неприятно медленной скоростью. Используйте флаг -d, чтобы ускорить вывод. Все записанные тайминги будут разделены на число, которое вы пройдете.

# Запускаем в 4 раза быстрее scriptreplay -d 4 -t timings typescript

Вы также можете использовать флаг -m, чтобы ограничить максимальную задержку между отдельными обновлениями. Это позволяет указать максимальную допустимую паузу в секундах, прежде чем воспроизведение сценария перейдет к следующей команде, даже если в машинописном тексте указана более длительная задержка.

# Максимальная задержка 2 секунды scriptreplay -m 2 -t timings typescript

Использование с интерактивными командами

Не рекомендуется использовать скрипт с сильно интерактивными командами. Терминальные текстовые редакторы, приложения на основе curses и диалоговые подсказки могут вставлять в ваш машинописный текст символы мусора, загрязняющего окружающую среду. script фокусируется на захвате типичного текстового вывода, а не на командах, которые управляют вашим терминалом для создания графического интерфейса.

script не подходит для использования с неинтерактивными оболочками, поскольку его внутренняя оболочка всегда интерактивна по своей природе. Команда не должно быть ожидается, что он также будет работать с конвейерным вводом.

Другие варианты

Флаг -c для сценария позволяет указать команду. Когда используется этот режим, сценарий запускает команду и фиксирует ее вывод, вместо того, чтобы создавать новую интерактивную оболочку. Это может быть более эффективным при захвате выходных данных некоторых процессов, которые ведут себя иначе, если они не подключены напрямую к TTY.

Флаг -f предписывает сценарию записывать прямо в журнал сеанса после каждого события. Это повышает безопасность, обеспечивая немедленный сбор продукции.

Страница руководства по сценарию предлагает этот флаг также можно использовать для мониторинга пользовательского терминала в реальном времени, например, в сценарии учителя и ученика. Учащийся запускал скрипт -f, затем учитель использовал SSH для подключения и потоковой передачи файла машинописного текста в прямом эфире.

скрипт обычно не принимает символическую ссылку в качестве пути машинописного текста. Флаг —force включает это поведение, инструктируя скрипт разрешать жесткие и программные ссылки к месту назначения.

Резюме

script позволяет записывать сеансы терминала в простые текстовые файлы с точными данными о времени. Вы можете проверять, публиковать и распечатывать машинописные тексты вручную или воспроизводить их в своем терминале с помощью scriptreplay.

Команды включены в большинство популярных дистрибутивов Linux. Они работают со всеми типами терминалов, но отдельные машинописные тексты могут некорректно воспроизводиться в терминале, отличном от того, который использовался для записи. Для достижения наилучших результатов запускайте scriptreplay в том же типе терминала, который вы использовали со скриптом.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *