Команда сценария - это утилита Unix, которая записывает сеанс терминала . Он восходит к BSD 3.0 1979 года . [1] По typescript
умолчанию сеанс записывается в имя файла ; чтобы указать другое имя файла выполните script
команду с пробелом и именем, например: script recorded_session
.
Записанный формат script
состоит из простой текстовой информации о времени (для всего сеанса) и дословного вывода команды, включая любой escape-код ANSI, который программа напечатала для форматирования. Для этой цели он использует псевдотерминал , поэтому программы действуют точно так же, как если бы они были на терминале. [1] Команда util-linux scriptreplay
предлагает функцию воспроизведения для своего сценария, который поддерживает использование дополнительного файла синхронизации для информации на уровне символов. [2] [3] Некоторые онлайн-сервисы, такие как ныне несуществующий shelr.tv, также могут отображать этот формат в качестве малополосной альтернативы видео-скринкастам. [4]
Программа ttyrec от 2000 года предоставляет те же функции и предлагает несколько привязок. Время аналогично util-linux. Более современный подход к этой концепции - "asciicast" JSON , используемый asciinema.
Альтернативы команде сценария
Одна из проблем с командой сценария заключается в том, что она позволяет вести журнал только для дочернего процесса; и часто возникает необходимость регистрировать команду в текущем процессе без создания нового процесса, например, когда требуется автоматизация сценария, который может регистрировать собственный вывод. В Unix операционные системы делают это возможным за счет использования труб и переадресаций. Рассмотрим следующие модельные примеры:
Оболочка Борна
Все оболочки, связанные с оболочкой Bourne (а именно: sh , bash и ksh ), позволяют прикреплять stdout и stderr к именованному каналу и перенаправлять на команду tee .
Пример
LOGNAME = "скрипт"
rm -f $ LOGNAME .p $ LOGNAME .logmknod $ LOGNAME .pptee < $ LOGNAME .p $ LOGNAME .log & exec > $ LOGNAME .p 2 > & 1
Вышеупомянутый сценарий записывает script.log
все выходные данные exec
команды. Однако некоторые интерактивные программы (например, python ) не отображают свой стандартный ввод при запуске в результирующей оболочке, хотя они это делают при запуске под командой сценария , опять же из-за обнаружения терминала.
Смотрите также
Рекомендации
- ^ a b Руководство по основным командам FreeBSD -
- ^ Linux пользователя Руководство Команды пользователя - -
- ^ LinuxInsight - Воспроизведение сеансов терминала с помощью scriptreplay
- ^ OMG! Ubuntu! - Как быстро записывать и публиковать скринкасты терминала