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

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

6 min read Linux Обновлено 30 Dec 2025
Создание GIF из терминала Linux с VHS
Создание GIF из терминала Linux с VHS

Изображение ноутбука с терминалом и кодом

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

Почему VHS может быть лучше обычной записи экрана

Традиционные записи экрана и видеофайлы занимают много места, требуют транскодирования и управления хостингом. GIFы компактнее для коротких демонстраций и лучше встраиваются в документы и статьи. В отличие от ручной съёмки мобильным телефоном, VHS автоматически проигрывает ввод команд и фиксирует результат в одном аккуратном файле.

Примеры альтернатив:

  • Простая запись экрана → большие MP4-файлы.
  • Конвертация видео в GIF → шаги и качество обычно неудобны.
  • Инструменты вроде Peek → подходят для записи области, но менее автоматизуемы.

Что потребуется для работы

  • ttyd — для виртуального tty (если требуется для некоторых способов рендера). Устанавливается через snap на системах с поддержкой snap.
  • ffmpeg — для финального рендера (обычно доступен в репозиториях).
  • Доступ к терминалу и базовое умение редактировать текстовые файлы (nano, vim и т. п.).

Ниже описаны установки под распространённые дистрибутивы.

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

Примечание: команды приводятся точь-в-точь, их нужно вводить в терминале. Если вы не уверены в безопасности репозитория — проверьте ключи и сайт разработчика.

Установка ttyd (если доступен snap)

sudo snap install ttyd --classic

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

На дистрибутивах на базе Debian/Ubuntu

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

curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg

Добавьте источник Charm в APT:

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

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

sudo apt update && sudo apt install vhs

На Arch Linux

Установите VHS из AUR (пример с yay):

yay -S vhs-bin

На Fedora и RHEL

Добавьте репозиторий Charm:

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

(На современных Fedora можно использовать dnf вместо yum.)

Как работать с VHS: базовый рабочий процесс

  1. Создайте новую «ленту» (.tape):
vhs new demo.tape
  1. Откройте файл в редакторе, например, nano:
nano demo.tape
  1. В файле найдёте конфигурацию и комментарии. Измените необходимые параметры: имя выходного файла, размеры окна, размер шрифта и т. п. Пример минимального содержимого:
Output demo.gif
Set FontSize 14
Set Width 1200
Set Height 600
Type "neofetch --ascii muo_ascii.txt"
Sleep 500ms
Enter
Sleep 5s
  1. Сохраните файл (Ctrl+O) и выйдите (Ctrl+X).

  2. Запустите VHS, подавая ленту на stdin:

vhs < demo.tape

VHS выполнит команды по очереди и сформирует указанный выходной файл (demo.gif).

Важно: команда Type ведёт к реальному выполнению команд в терминале — не включайте пароли/секреты в ленту.

Основные команды VHS и примеры использования

  • Type “<строка>” — вводит строку как набор символов (симулирует набор с задержкой).
  • Enter — имитирует нажатие Enter и выполнит команду.
  • Sleep 200ms — пауза между действиями (можно указывать миллисекунды или секунды).
  • Hide / Show — скрывает и показывает последующие команды в записи.
  • Backspace — удаляет n символов, имитируя Backspace.
  • Ctrl+l — эквивалент очистки экрана (введите как Ctrl+l).
  • PlaybackSpeed <число> — изменяет скорость воспроизведения итоговой анимации (0.5 — в 2 раза медленнее).
  • Output <имя файла> — задаёт имя выходного файла (gif/mp4/webm).
  • Set FontSize <число> — размер шрифта в терминах VHS.
  • Set Width <число> / Set Height <число> — размеры окна терминала в пикселях.

Пример использования Hide/Show, чтобы выполнить команду без вывода её текста на экран:

Hide
Type "neofetch --ascii muo_ascii.txt"
Sleep 500ms
Enter
Show

Чит-лист: быстрые пресеты для типичных задач

  • Демонстрация одной команды
Output demo.gif
Set FontSize 16
Set Width 900
Set Height 300
Type "ls -la"
Enter
Sleep 2s
  • Снимок последовательности команд с замедлением
Output walkthrough.gif
Set FontSize 14
Set Width 1200
Set Height 640
PlaybackSpeed 0.75
Type "git status"
Enter
Sleep 800ms
Type "git add ."
Enter
Sleep 300ms
Type "git commit -m \"feat: add demo\""
Enter
Sleep 2s

Другие подходы и когда VHS полезен, а когда — нет

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

  • Asciinema: записывает терминал в JSON (asciicast), легко встраивается в сайты, интерактивен и мал по размеру. Можно конвертировать asciicast в GIF через asciicast2gif или svg-term, но это добавляет шаги.
  • Peek: небольшая GUI-утилита для записи области экрана в GIF, удобна для быстрых записей GUI и терминала, но менее воспроизводима в автоматизации.
  • Прямой захват экрана через ffmpeg: гибко, но требует ручной обрезки и синхронизации.

Когда VHS работает плохо:

  • Интерактивные приложения, требующие пользовательского ввода в реальном времени (например, ncurses-приложения с особым управлением), могут вести себя иначе.
  • Программы, запрашивающие пароли через безопасный ввод (sudo, ssh) — ввод пароля в ленте нежелателен и небезопасен.
  • GUI-приложения и видеоплееры — VHS не подходит.

В таких случаях используйте либо asciinema (когда нужен пошаговый экспорт), либо запись экрана.

Безопасность и конфиденциальность

  • Не включайте в .tape секреты, токены или пароли. Type вызывает реальное выполнение команд.
  • Внимательно проверяйте вывод перед публикацией — он может содержать пути, имена пользователей или конфигурации.

Мини‑методология для создания качественных GIF

  1. Спланируйте сценарий: список команд и желаемый вывод.
  2. Подготовьте статические заглушки вывода, если реальный вывод раскрывает конфиденциальную информацию.
  3. Настройте FontSize и размеры окна для хорошей читаемости на целевой платформе.
  4. Используйте PlaybackSpeed и Sleep для удобного темпа воспроизведения.
  5. Протестируйте и поправьте тайминги, затем отрендерьте финальную версию.
  6. Оптимизируйте размер файла: при необходимости используйте форматы MP4/WebM для меньшего размера.

Рекомендации для авторов туториалов (чек‑лист)

  • Проверьте читаемость: размер шрифта и ширина окна.
  • Убедитесь, что все команды воспроизводятся без зависания.
  • Не показывайте секреты и ключи.
  • Дайте альтернативные шаги для пользователй других дистрибутивов.
  • Предоставьте текстовые блоки команд отдельно в статье (для копирования).

Пример: готовая лента demo.tape

# Настройки
Output demo.gif
Set FontSize 14
Set Width 1000
Set Height 480
PlaybackSpeed 1

# Демонстрация neofetch
Type "neofetch --ascii muo_ascii.txt"
Sleep 400ms
Enter
Sleep 3s

# Заключение
Type "echo 'Готово'"
Enter
Sleep 1s

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

  • GIF чётко показывает ввод и вывод команд.
  • Текст читаем при стандартной ширине страницы.
  • В GIF нет секретных данных.
  • Продолжительность и скорость соответствуют ожиданиям аудитории.

Советы по оптимизации и совместимости

  • Выберите MP4/WebM, если нужен меньший размер и высокая совместимость с современными сайтами.
  • Для интеграции в CMS используйте WebM/MP4, если система плохо поддерживает GIF большого размера.
  • Проверяйте цветовую схему терминала — контраст важен для читаемости.

Частые ошибки и способы их обхода

  • Слишком маленький шрифт → увеличьте Set FontSize.
  • Слишком быстрое воспроизведение → уменьшите PlaybackSpeed или увеличьте Sleep между командами.
  • Команды, требующие интерактивности, зависают → замените на статический вывод или используйте Hide/Show и подготовленные результаты.

Краткий глоссарий

  • VHS: утилита для записи последовательности команд терминала в GIF/MP4/WebM.
  • .tape: текстовый файл, описывающий шаги записи.
  • ttyd: прокси для терминала, служит для удалённого доступа/стриминга tty.
  • ffmpeg: инструмент для обработки и конвертации мультимедиа.

Социальный текст и объявления

Социальный превью (кратко): “Создавайте демонстрации терминала в GIF с помощью VHS — быстро, компактно и удобно для туториалов.”

Короткое объявление (для рассылки, 100–200 слов):

VHS — простая и удобная утилита для создания наглядных GIF-демонстраций команд в терминале. Вместо тяжёлых видео и сложной обработки вы пишете сценарий в .tape, задаёте шрифт и размеры окна — и получаете готовый GIF. Отлично подходит для документации, блогов и обучающих материалов. Установите через репозиторий Charm, настройте PlaybackSpeed и используйте Hide/Show, чтобы не показывать чувствительные команды. Альтернативы: Asciinema для интерактивных записей и Peek для быстрых GUI-записей. Попробуйте VHS, чтобы ускорить создание понятных и компактных демонстраций.

Заключение

VHS — отличный инструмент для авторов технической документации и преподавателей, которые хотят быстро и аккуратно показать работу команд в терминале. Он требует немного подготовки, но даёт управляемый и повторяемый результат. Если вы готовите уроки или статьи, попробуйте VHS как альтернативу видео: это экономит место и упрощает встраивание примеров.

Сводка ключевых рекомендаций:

  • Планируйте сценарий и защищайте секреты.
  • Настраивайте FontSize и разрешение для читабельности.
  • Тестируйте и подгоняйте PlaybackSpeed и Sleep.

Макет страницы с примером работы VHS

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

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

Тестирование API в Linux с HTTPie
Dev Tools

Тестирование API в Linux с HTTPie

Как перенести музыку с iPod на компьютер
Руководство

Как перенести музыку с iPod на компьютер

Как выбрать платформу для блога
Блогинг

Как выбрать платформу для блога

Как использовать Календарь Vivaldi
браузер

Как использовать Календарь Vivaldi

Рип DVD с HandBrake — быстро и бесплатно
How-to

Рип DVD с HandBrake — быстро и бесплатно

Тройное вымогательство: защита от многоуровневых атак
Кибербезопасность

Тройное вымогательство: защита от многоуровневых атак