Repolode
idank

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. 1

    Клонируйте репозиторий

    git clone https://github.com/idank/explainshell.git
  2. 2

    Установите зависимости Python в virtualenv, как описано в README

    pip install -r requirements-dev.txt
  3. 3

    Скачайте актуальную базу данных

    make download-latest-db
  4. 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 обновляется ежедневно.

Похожие проекты