
cmdchamp v1.2.15
тренажёр bash CLI — 30 уровней от ls до повышения привилегий
cmdchamp
Bash CLI-тренажёр — 30 уровней от ls до повышения привилегий.

Каждый вопрос требует ввести реальную команду — мгновенная обратная связь, двигаемся дальше. Многие выполняются на реальных файлах в песочнице, и все принимают несколько допустимых вариантов синтаксиса (sort -u или sort | uniq). Tab переключает man-страницу, когда нужна подсказка, а порядок вопросов рандомизируется при каждом запуске, так что заучить его не получится. Система освоения отслеживает ваши знания: ответьте на вопрос правильно дважды, чтобы освоить его; ошибётесь — и он понижается, поэтому возвращается раньше. Серия из 5 правильных ответов запускает fire-режим — баннер, который действует, пока вы не ошибётесь.
Каждый уровень завершается босс-раундом — без man-страниц, таймер 30 секунд, для прохождения нужно 4/5. При провале можно сразу повторить босса или вернуться к практике. Пройдите все 30 — и откроется режим испытания: каждый уровень, таймер 20 секунд, без man-страниц, одна ошибка — и вы выбываете. Первый запуск включает короткое обучение и тест на определение уровня, который позволяет пропускать уже знакомые уровни.
Благодаря bubblewrap команды выполняются в настоящей изолированной файловой системе. Без него ответы сравниваются по тексту. Уровни поиска (16-17) принимают как синтаксис rg/fd, так и grep/find. Встроено редактирование строки в стиле Vi.
Установка
Arch (AUR):
paru -S cmdchamp # or: yay -S cmdchamp
Где угодно (один файл):
mkdir -p ~/.local/bin && curl -sL https://raw.githubusercontent.com/mellen9999/cmdchamp/main/cmdchamp -o ~/.local/bin/cmdchamp && chmod +x ~/.local/bin/cmdchamp
Добавьте ~/.local/bin в PATH, если нужно: echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
Или склонируйте:
git clone https://github.com/mellen9999/cmdchamp.git
cd cmdchamp && make install
Требуется: bash 4.4+, coreutils, awk
macOS: Поставляется с bash 3.2 — сначала установите bash 4.4+: brew install bash
Необязательно: bubblewrap (bwrap) для режима песочницы (только Linux) — в большинстве дистрибутивов для десктопа он уже есть. Без него ответы только сравниваются по тексту.
Доступность: Учитывает NO_COLOR и TERM=dumb. Раскладка адаптируется под COLUMNS / tput cols. Полосы освоения имеют и цвет, и символ ✓ / ~ / x — читается без цвета.
Терминалы: Работает на настоящих последовательных терминалах, а не только в эмуляторах. cmdchamp проверяет, что терминал реально умеет отображать, и выбирает один из трёх уровней отрисовки — unicode, DEC ACS псевдографика или чистый ASCII, — поэтому рамки сохраняются на VT100/VT220/VT320/VT420 или Wyse. На монохромном экране цветовые различия перекодируются в жирный/инверсный. Можно принудительно задать уровень с помощью CMDCHAMP_ASCII=1 или CMDCHAMP_UNICODE=1. ./test_terminals.sh проверяет это.
Использование
cmdchamp # Launch the game menu
cmdchamp --no-sandbox # Disable sandbox (text-match only)
cmdchamp reset # Clear all progress
cmdchamp test # Run self-tests
cmdchamp version # Print version
cmdchamp help # Show help
В меню есть продолжение, новая игра, сценарии, режим испытания, статистика и настройки. Горячие клавиши 1–7 сразу переходят к пункту; j/k или стрелки перемещают; Enter выбирает.
Уровни
| # | Название | Фокус |
|---|---|---|
| Основы | ||
| 1 | Первые шаги | pwd, ls, echo, cd, mkdir |
| 2 | Основы работы с файлами | cp, mv |
| 3 | Сохраняйте свою работу | >, >>, tee |
| 4 | Чтение файлов | cat, head, tail, less |
| 5 | Основы конвейеров | конвейеры, grep, wc, sort, uniq |
| 6 | Ввод и here-строки | <, <<<, tr, cut, rev, bc |
| 7 | Обработка ошибок | 2>, 2>&1, &>, /dev/null |
| 8 | Логические операторы | &&, || |
| 9 | Переменные | $VAR, присваивание, подстановка |
| 10 | Специальные переменные | $$, $?, $!, $#, $@, $0 |
| 11 | Управление заданиями | bg, fg, jobs, &, Ctrl+Z |
| 12 | Условия проверки | -f, -d, -z, -n, -eq, -lt |
| 13 | Основные файловые инструменты | cp, mv, ln, chmod, du, tar, diff |
| 14 | Системное администрирование | ping, df, free, ss, systemctl, ip |
| 15 | Мультиплексоры | tmux: сессии, окна, панели |
| 16 | Поиск текста | grep, ripgrep, regex |
| 17 | Поиск файлов | find, fd, по имени/размеру/времени/типу |
| 18 | Обработка данных | sort, uniq, cut, awk, tr, comm |
| 19 | Строки и массивы | подстановка параметров, массивы |
| 20 | Управляющие конструкции | if/else, циклы, case, функции |
| 21 | Пакетные операции | find -exec, xargs, sed -i, crontab |
| 22 | Продвинутые регулярные выражения | опережающая проверка, sed, awk |
| DevOps и безопасность | ||
| 23 | Git | ветки, удалённые репозитории, перебазирование, stash, bisect |
| 24 | Сетевые инструменты | tshark, curl, jq, ssh-туннели, openssl, SMB |
| 25 | Сканирование сети | nmap, определение сервисов, скрипты |
| 26 | WiFi и RF | aircrack-ng, netcat, tcpdump, разведка беспроводных сетей |
| 27 | Взлом хэшей | hashcat, john, hydra, кодирование |
| 28 | Форензика | strings, readelf, binwalk, volatility, exiftool |
| 29 | Повышение привилегий | SUID, GTFOBins, перечисление |
| 30 | ROOT | аварийное восстановление, chroot, выживание в офлайне |
Сценарии
Многошаговые задания в песочнице — состояние сохраняется между шагами. Доступны из меню Сценарии после прохождения босса, открывающего их.
| # | Название | Открывается после | Шаги |
|---|---|---|---|
| 1 | Блокировка доступа | босса 13 уровня | 6 |
| 2 | Архивация и извлечение | босса 13 уровня | 6 |
| 3 | Найти иголку | босса 16 уровня | 7 |
| 4 | Грязный CSV | босса 18 уровня | 4 |
| 5 | Инцидент | босса 18 уровня | 5 |
| 6 | Сломанный деплой | босса 21 уровня | 7 |
| 7 | Аварийные логи | босса 21 уровня | 5 |
| 8 | Правка конфигов | босса 21 уровня | 5 |
| 9 | Спасение Git | босса 23 уровня | 6 |
| 10 | Пакетный рефакторинг | босса 21 уровня | 6 |
| 11 | Форензик-обследование | босса 22 уровня | 6 |
Тест на определение уровня
После обучения при первом запуске вас спрашивают, хотите ли вы пройти тест на определение уровня, чтобы перепрыгнуть вперёд. Если согласиться, будет 2 вопроса на уровень, по 30 секунд на каждый, без man-страниц. Одна ошибка — и это ваш стартовый уровень.
Пасхальные яйца
8 скрытых достижений. Экран статистики показывает, сколько вы нашли.
Управление
| Клавиша | Действие |
|---|---|
| Enter | Отправить ответ |
| Tab | Переключить man-страницу |
| Ctrl+d | Выйти (сводка сессии) |
| Esc | Обычный режим Vi |
| ? | Все сочетания клавиш (обычный режим) |
Данные
Прогресс сохраняется в ${XDG_DATA_HOME:-~/.local/share}/cmdchamp/.
Лицензия
MIT