Гид по технологиям

Создание GIF из терминала Linux с VHS

6 min read Linux Обновлено 08 Jan 2026
GIF из терминала Linux с VHS
GIF из терминала Linux с VHS

VHS — это простая утилита командной строки для рендеринга сценариев терминала (.tape) в анимированные GIF (или MP4/WebM). Установите зависимые пакеты (ttyd, ffmpeg), напишите .tape с последовательностью команд, сохраните и запустите vhs < demo.tape. Этот подход даёт качественные, компактные демонстрации команд и удобнее обычной записи экрана.

Ноутбук с открытым терминалом и кодом

Терминал Linux — мощный инструмент, но новичку его поведение часто кажется абстрактным: строки текста, команды, выводы и иногда ASCII-арт. Лучший способ объяснить — показать. Видео отлично подходят, но они тяжёлые и неудобные для встраивания. GIF — компактная и универсальная альтернатива. VHS помогает создавать такие GIF, проигрывая заранее описанные команды и захватывая их вывод.

Зачем использовать VHS

  • Лёгкость воспроизведения — GIF встраивается в документацию и блоги.
  • Репродуцируемость — сценарий (.tape) — это документируемая последовательность команд.
  • Настраиваемость — регулируется размер окна, размер шрифта, задержки набора.

Важно: GIF не заменяет полноформатное видео, если вы показываете графические интерфейсы. VHS предназначен для демонстрации консольных действий.

Макет экрана с демонстрацией терминала для GIF

Как работает VHS — короткая модель умозаключения

Ментальная модель: представьте .tape как сценарий для актёра (терминала). Команды в файле выполняются последовательно, VHS симулирует ввод (Type, Enter), имитирует паузы и редактирование, снимает вывод, а затем рендерит анимацию.

Ключевые понятия:

  • .tape — файл-сценарий с командами и настройками.
  • Type — симулирует набор текста (и выполняет команды).
  • Hide/Show — скрывают или показывают вводимые команды в итоговом GIF.
  • PlaybackSpeed — регулировка скорости воспроизведения.

Установка VHS на Linux

VHS требует ttyd и ffmpeg для рендеринга. В разных дистрибутивах способы установки отличаются.

Если в вашей системе поддерживается snap, установите ttyd так:

sudo snap install ttyd --classic  

Пакеты ffmpeg обычно доступны в стандартных репозиториях вашего дистрибутива.

На Debian-подобных дистрибутивах

Добавьте ключ репозитория в keyring:

curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/  " | sudo tee /etc/apt/sources.list.d/charm.list

Обновите источники и установите VHS:

sudo apt update && sudo apt install vhs

На Arch Linux

Через AUR с помощью yay:

yay -S vhs-bin

На Fedora и Red Hat Enterprise Linux

Скопируйте и вставьте весь фрагмент ниже, затем нажмите Enter:

echo '[charm]  
name=Charm  
baseurl=https://repo.charm.sh/yum/  
enabled=1  
gpgcheck=1  
gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo

Затем установите VHS:

sudo yum install vhs

Быстрый пример: создание первого .tape

VHS использует расширение .tape. Создадим базовый файл и откроем его в nano:

vhs new demo.tape  
nano demo.tape  

Внутри файла вы увидите настройки как комментарии: имя выходного файла, формат, размер шрифта и задержки. Пример содержимого .tape:

Output demo.gif  
Set FontSize 14  
Set Width 1200  
Set Height 600  
Type "neofetch --ascii muo_ascii.txt"  
Sleep 500ms  
Enter  
Sleep 5s

Пояснения к часто используемым командам:

  • Type “…” — вводит строку и (если затем следует Enter) выполняет её.
  • Enter — эквивалент клавиши Return.
  • Sleep 200ms — пауза в 200 миллисекунд (в тексте мы будем писать «мс» для удобства).
  • Hide / Show — скрывают вводимые строки между ними.

Сохраните (Ctrl+O) и выйдите (Ctrl+X), затем выполните:

vhs < demo.tape

VHS срендерит GIF по указанным в файле настройкам.

Полезные приёмы и настройки

  • Размер шрифта и размеры окна. Для публикаций часто разумно использовать ширину 1200px и высоту 600px вместе с удобочитаемым FontSize (12–16).
  • Задержки: Sleep 500ms или Sleep 5s помогают выделить момент выполнения команды.
  • PlaybackSpeed: снизьте скорость, если анимация выглядит слишком быстрой:
PlaybackSpeed 0.5
  • Backspace: симулирует нажатие Backspace. Добавьте число, чтобы удалить N символов.
  • Ctrl+l: большинство дистрибутивов очистит экран при вводе Ctrl+l.

Список всех команд и деталей форматирования доступен в репозитории VHS на GitHub.

Примеры шаблонов .tape (шаблоны для быстрых задач)

  1. Короткая демонстрация команды:
Output quick-demo.gif
Set FontSize 14
Type "ls -la"
Enter
Sleep 2s
  1. Скринкаст с хитрым скрытым вызовом (скроет ключи/пароли):
Output secure-demo.gif
Set Width 1000
Set Height 500
Type "echo 'Запуск теста'"
Enter
Sleep 300ms
Hide
Type "cat secret.txt"
Enter
Show
Sleep 2s

(Не храните реальные секреты в репозиториях или в публичных .tape-файлах.)

Когда VHS не подходит

  • Если демонстрируем GUI-приложения — VHS не снимет окна GUI.
  • При интерактивных, длительных сессиях, где требуется ввод от пользователя в реальном времени — лучше записать видео.
  • Для очень длинных уроков, где нужна озвучка и аннотации, видео остаётся удобнее.

Альтернативы и сравнение

  • Asciinema: записывает сессии терминала в собственный формат (asciicast). Его можно воспроизвести в браузере и конвертировать в видео/анимацию.
  • Terminalizer (Node.js): похож на VHS по идее, позволяет генерировать GIF и видео.
  • ttyrec / script: низкоуровневые утилиты для записи терминала, требуют дополнительного инструментария для рендера.

Выбор зависит от целей: если нужна интерактивная веб-плеер-репродукция — Asciinema; если нужен файл-артефакт (GIF) и сценарии — VHS удобен.

Практические советы по оптимизации и публикации

  • Размер GIF: GIF может быть громоздким. Для экономии используйте разумную ширину/высоту и минимизируйте цветовую палитру в пост-обработке.
  • Формат: если вы целитесь на малый размер, рассмотрите WebM/MP4 (VHS поддерживает). Эти форматы обычно значительно легче, чем GIF.
  • Хостинг: храните GIF на CDN или в облачном хранилище (GitHub Releases, S3) для быстрой отдачи.
  • Доступность: всегда добавляйте понятный ALT для GIF в публикации — это поможет пользователям с ограниченными возможностями и улучшит SEO.

Совет: в документации указывайте команду, которая выполняется в GIF, чтобы читатель мог скопировать и воспроизвести результат локально.

Роль-ориентированный чек-лист перед публикацией

Для автора туториала:

  • Проверить, что .tape не содержит секретов.
  • Убедиться в читаемости шрифта и размере окна.
  • Добавить инструкции и команды, воспроизводимые на целевой ОС.

Для инженера DevOps:

  • Проверить воспроизводимость на целевых образах/контейнерах.
  • Проверить наличие и правильность ffmpeg/ttyd на CI или в среде сборки.

Для менеджера контента:

  • Подготовить ALT и краткий текст под изображение.
  • Решить формат публикации (GIF vs WebM).

Отладка и распространённые ошибки

  • Странные символы/кодировка: убедитесь, что .tape сохранён в UTF-8.
  • Команды не выполняются: проверьте PATH и права выполнения в среде, где рендерите.
  • Неверный размер окна/обрезанный вывод: скорректируйте Set Width/Set Height или используйте перенос строк в выводе.

Пример рабочего процесса (мини-SOP)

  1. Подготовьте окружение: установите ttyd и ffmpeg.
  2. Создайте demo.tape с настройками и командами.
  3. Локально прогоните vhs < demo.tape и проверьте результат.
  4. При необходимости отредактируйте задержки и шрифт.
  5. Сконвертируйте в WebM/MP4 при необходимости для публикации.
  6. Опубликуйте артефакт и добавьте ALT/описание.

Критерии приёмки

  • GIF воспроизводит ожидаемые команды и их вывод.
  • Текст читабелен при нормальном размере экрана.
  • В .tape нет секретов или чувствительных данных.

Краткий глоссарий терминов

  • .tape — файл-сценарий VHS.
  • Type — команда для имитации ввода текста.
  • Sleep — пауза между действиями (в миллисекундах).
  • Hide / Show — скрытие/показ вводимых строк.

Итог

VHS — удобный инструмент для создания наглядных, воспроизводимых демонстраций командной строки. Он подходит для документации, блогов и образовательных материалов, где важно показать пошаговые действия без тяжести видеофайлов. Если ваша цель — интерактивность в браузере, рассмотрите Asciinema; если нужен компактный файл для встраивания — попробуйте VHS и настройте параметры рендера под свою аудиторию.

Важно: перед публикацией просмотрите .tape на предмет секретов и проверьте результат на целевой платформе.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство