Умная замена cd: запоминает часто используемые каталоги и позволяет быстро переходить к ним в популярных оболочках.
idank/explainshell
Веб-инструмент и библиотека Python, которые объясняют команды shell, сопоставляя каждый аргумент с описанием из справочной страницы man.
- Звёзды
- 14,297
- Форки
- 854
- Открытые issues
- 57
- Последний коммит
- 2 месяца назад
Что это?
explainshell принимает команду shell, например конвейер с флагами и аргументами, разбирает её в AST с помощью bashlex и сопоставляет каждый токен с описанием опции из соответствующей справочной страницы man. В результате видно, за что отвечает каждая часть команды — это помогает разобраться в незнакомых однострочных командах.
Проект разбирает справочные страницы man с помощью макросов roff или экстрактора на основе LLM, который возвращает диапазоны строк в исходном тексте. Поэтому показываемые описания берутся непосредственно из справочной страницы, а не генерируются. Обработанные страницы хранятся в одной базе данных SQLite, а совпадения отображает веб-интерфейс на Flask. Проект также обрабатывает операторы shell, например конвейеры и &&, как отдельные узлы.
В репозитории есть CLI для извлечения, сравнения и проверки данных справочных страниц, а также инструменты для оценки извлечения с помощью LLM и преобразования разметки mandoc в Markdown. Актуальная база данных распространяется через релизы GitHub, а её содержимое подпадает под лицензии, применимые к каждой исходной справочной странице.
Ключевые возможности
- 01Сопоставляет каждый аргумент команды shell с описанием соответствующей опции из справочной страницы man.
- 02Разбирает команды в AST, чтобы обрабатывать конвейеры, && и другие операторы shell.
- 03Извлекает опции с помощью макросов roff или LLM, которая возвращает диапазоны строк исходного текста.
- 04Хранит обработанные справочные страницы в одной базе данных SQLite и предоставляет веб-интерфейс на Flask.
- 05Предоставляет CLI для извлечения, сравнения и поиска по данным справочных страниц.
Сценарии использования
- Разобраться в незнакомой однострочной команде или конвейере, прежде чем запускать его.
- Проверять команды shell в скриптах или документации.
- Создать собственный справочник команд на основе данных справочных страниц man.
- Оценивать и сравнивать извлечение опций из справочных страниц с помощью LLM.
Быстрый старт
- 1
Клонируйте репозиторий
git clone https://github.com/idank/explainshell.git - 2
Установите зависимости Python в virtualenv, как описано в README
pip install -r requirements-dev.txt - 3
Скачайте актуальную базу данных
make download-latest-db - 4
Запустите веб-сервер, затем откройте http://localhost:5000
make serve
Что важно знать
- Код распространяется по лицензии GPLv3, поэтому производные дистрибутивы также должны распространяться по GPLv3.
- В опубликованную базу данных входят исходные man-страницы, каждая из которых распространяется на собственных условиях лицензии. Поэтому перед повторным распространением необходимо самостоятельно проверить соблюдение лицензионных требований.
- Для извлечения новых man-страниц потребуется доступ к провайдеру LLM, например Codex, или ключ API OpenAI.
Темы
Частые вопросы
- Что такое explainshell?
- Веб-инструмент и библиотека Python, которые объясняют команды shell, сопоставляя каждый аргумент с описанием из справочной страницы man. explainshell принимает команду shell, например конвейер с флагами и аргументами, разбирает её в AST с помощью bashlex и сопоставляет каждый токен с описанием опции из соответствующей справочной страницы man. В результате видно, за что отвечает каждая часть команды — это помогает разобраться в незнакомых однострочных командах.
- explainshell можно использовать бесплатно? Какая у него лицензия?
- explainshell распространяется с открытым исходным кодом под лицензией GPL-3.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- explainshell всё ещё поддерживается?
- Обновлялся за последние 6 месяцев. Последний коммит в explainshell — 26 авг. 2026 г..
- Для чего можно использовать explainshell?
- Разобраться в незнакомой однострочной команде или конвейере, прежде чем запускать его. Проверять команды shell в скриптах или документации. Создать собственный справочник команд на основе данных справочных страниц man. Оценивать и сравнивать извлечение опций из справочных страниц с помощью LLM.
- Как установить explainshell?
- Клонируйте репозиторий: git clone https://github.com/idank/explainshell.git Установите зависимости Python в virtualenv, как описано в README: pip install -r requirements-dev.txt Скачайте актуальную базу данных: make download-latest-db Запустите веб-сервер, затем откройте http://localhost:5000: make serve
- Где скачать explainshell?
- Исходный код и инструкции по установке — на GitHub: https://github.com/idank/explainshell
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
POSIX-совместимый bash-скрипт для установки и переключения между несколькими версиями Node.js для каждого пользователя и shell.
Универсальный CLI-инструмент для нечёткого поиска по любому списку: фильтрует ввод и превращает shell-скрипты в интерактивные терминальные селекторы.
Минималистичный настраиваемый кроссшелльный промпт на Rust, показывающий важную информацию о проекте и окружении.
Инструмент на JavaScript для написания скриптов в стиле shell: обёртка над child_process с безопасным экранированием аргументов и кроссплатформенными помощниками.
Библиотека Python для создания CLI-приложений на основе стандартных подсказок типов с автоматической справкой, проверкой аргументов и автодополнением команд в shell.