Назад к обновлениям
New releaseAug 13, 2026

cmdchamp v1.3.0

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

Поделиться

cmdchamp

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

demo

Каждый вопрос просит вас ввести реальную команду — мгновенная обратная связь, двигайтесь дальше. Промахнулись — и вам не просто показывают ответ: показывают, что напечатала ВАША команда, в сравнении с ожидаемым результатом, а для конвейера — количество строк на каждом этапе, чтобы вы видели, где именно он «умер». Для вопросов с текстовым сравнением указывается, к какому принятому ответу ваш был ближе всего, и какой именно флаг вы упустили. Ответили правильно длинным путём — и вам покажут короткий: cat f | grep -c X заслуживает подсказку Shorter: grep -c X f, которая срабатывает и на меньшее число этапов конвейера, и на меньшее число символов, потому что урок — в сэкономленных процессах. Многие вопросы выполняются на реальных файлах в песочнице, и все принимают несколько корректных синтаксисов (sort -u или sort | uniq). Tab переключает man-страницу, когда нужна справка, — сокращённые страницы для каждой команды, которую выполняет ответ, плюс синтаксис shell, на который он опирается (x=$(cmd), ${var:-default}, ${path##*/}), так что в вопросе не остаётся ничего, что нужно угадывать. Порядок рандомизируется при каждом запуске, чтобы вы не могли его заучить. Мастерство отслеживает, что вы знаете: ответьте на вопрос правильно дважды, чтобы освоить его, промахнётесь — и он понижается, чтобы вернуться раньше. Серия из 5 правильных ответов запускает fire mode — баннер, который действует, пока вы не промахнетесь.

Каждый уровень завершается босс-раундом — без man-страниц, таймер 30 секунд, 4/5 для прохода. Провалили — можно сразу повторить босса или вернуться к практике. Пройдите все 30, и откроется challenge mode — финальное испытание: многоступенчатые цепочки команд, которые собирают инструменты со всей игры в один конвейер. 30 секунд на каждую, одна жизнь, без man-страниц, ваш лучший результат — рекорд. Каждая цепочка оценивается по реальному выводу в песочнице, так что любой корректный конвейер проходит. Каждый запуск также создаёт новую рандомизированную песочницу — другие IP, счётчики, хосты и данные логов — и выбирает из 50+ шаблонов цепочек с меняющимися разделителями, порядком сортировки и агрегатами, так что самый загруженный IP, топовый URL, наибольший счётчик никогда не повторяются дважды. Первый запуск включает короткий обучающий курс и тест на определение уровня, который позволяет пропустить уже знакомые уровни.

С bubblewrap команды выполняются в реальной изолированной файловой системе и оцениваются по фактическому выводу. Внутренняя «коробка» синтетическая — пользователь sandbox, хост sandbox, собственные /etc/passwd и командная строка ядра — так что ничто из введённого вами не выведет на экран ваше реальное имя пользователя, имя машины или структуру диска, а id, whoami и hostname отвечают одинаково везде. Это распространяется и на уровень криминалистики: уровень 28 выдаёт вам реальный образец бинарника (samples/target.bin) и оценивает, действительно ли вы извлекли из него флаг, домен эксфильтрации и утёкший API-ключ — то же самое для вопросов jq на реальном JSON. Финальное испытание собирает эти извлечения в цепочки с таймером. Уровни 24–25 теперь тоже выполняются по-настоящему: внутри собственного сетевого пространства имён песочницы запускается небольшой HTTP-сервис на localhost:8080, пока выполняется ваш ответ, с тремя слушающими портами, так что curl, jq по HTTP, ss и nmap оцениваются по тому, что они реально вернули. Ничего не открывается вашей машине — пространство имён по-прежнему блокирует все исходящие соединения, а порт невидим снаружи. Только инструменты, которые физически не могут работать в песочнице — wifi/RF, захват трафика в реальном времени и крупномасштабная криминалистика памяти/диска — остаются с текстовым сравнением. Уровни поиска (16–17) принимают и синтаксис rg/fd, и grep/find. Встроено редактирование строк в стиле Vi — движения, операторы, счётчики, регистры, отмена и визуальный режим (v/V, o для смены конца), с ? для полной карты клавиш.

Установка

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) — большинство дистрибутивов для десктопа включают его. Без него ответы сравниваются только по тексту

Опционально: python3 — обслуживает HTTP-сервис localhost песочницы, поэтому вопросы live api / live box на уровнях 24–25 оцениваются по реальному выводу. Без него эти вопросы возвращаются к текстовому сравнению; больше ничего не меняется

Доступность: Учитывает 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                # Запустить игровое меню
cmdchamp explain 'CMD'  # Объяснить любую команду — каждый флаг, плюс окружающий синтаксис shell
cmdchamp autopsy        # Прочитать собственную историю shell и сопоставить её с учебной программой
cmdchamp daily          # Сыграть сегодняшний ежедневный забег (одинаковый для всех)
cmdchamp daily 2026-02-16   # Переиграть забег конкретного дня (посоревнуйтесь с другом)
cmdchamp play           # Песочница свободной игры: введите любую команду, посмотрите, как она выполняется
cmdchamp --no-sandbox   # Отключить песочницу (только текстовое сравнение)
cmdchamp reset          # Сбросить весь прогресс
cmdchamp test           # Запустить самотесты
cmdchamp version        # Показать версию
cmdchamp help           # Показать справку

cmdchamp explain (или cmdchamp x) — это панель Tab как отдельный инструмент: вручную написанные страницы для ~300 команд плюс окружающий синтаксис shell, офлайн, без сети, без зависимостей. Принимает команду в кавычках или отдельные слова, а при отсутствии того и другого читает stdin — так что history | tail -1 | cmdchamp x объясняет, что вы только что выполнили. Выход 0, когда команда известна, 1 — когда нет.

Категории