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