Repolode
idank

idank/explainshell

通过将命令行参数匹配到 manpage 帮助文本来解释 shell 命令的网页工具与 Python 库。

Star
14,297
Fork
854
未关闭 Issue
57
最近提交
2个月前

这是什么?

explainshell 接收一条带参数和选项的 shell 命令行,使用 bashlex 将其解析为 AST,再把每个片段与对应 manpage 中提取出的选项说明进行匹配。结果会展示命令各部分的作用,适合阅读不熟悉的单行命令。

项目通过 roff 宏或基于 LLM 的提取器解析 manpage。LLM 返回的是原始文本中的行号范围,帮助文本直接从 manpage 切片得到,而不是生成的内容。处理后的 manpage 存储在一个 SQLite 数据库中,由 Flask 渲染网页界面。管道和 && 等 shell 操作符也会作为独立节点处理。

仓库提供用于提取、比对和查看 manpage 数据的 manager 命令行工具,以及 LLM 提取和 mandoc 渲染的评估脚本。线上数据库通过 GitHub Release 发布,其中的 manpage 内容遵循各自上游的许可证。

核心功能

  • 01将 shell 命令中的每个参数匹配到 manpage 中对应的选项说明。
  • 02通过 AST 解析命令行,支持管道、&& 等 shell 操作符。
  • 03可用 roff 宏或 LLM 提取选项,LLM 返回原文行号范围。
  • 04处理后的 manpage 存入单个 SQLite 数据库,并提供基于 Flask 的网页界面。
  • 05提供命令行工具用于提取、比对和查询 manpage 数据。

适用场景

  • 在运行陌生的单行命令或管道前理解每个部分的作用。
  • 审查脚本或文档中的 shell 命令。
  • 基于 manpage 数据自建命令参考站点。
  • 评估或比较基于 LLM 的 manpage 选项提取效果。

快速上手

  1. 1

    克隆仓库

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

    安装 Python 依赖(按 README 在虚拟环境中进行)

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

    下载线上数据库

    make download-latest-db
  4. 4

    启动 Web 服务器,然后打开 http://localhost:5000

    make serve

使用前须知

  • 代码采用 GPLv3 许可证,因此衍生发行版也必须采用 GPLv3。
  • 发布的数据库包含各上游手册页,它们各自有独立许可证,再分发前需要自行进行许可合规审查。
  • 提取新的手册页需要访问 Codex 等 LLM 服务商或 OpenAI API 密钥。

标签

常见问题

explainshell 是什么?
通过将命令行参数匹配到 manpage 帮助文本来解释 shell 命令的网页工具与 Python 库。 explainshell 接收一条带参数和选项的 shell 命令行,使用 bashlex 将其解析为 AST,再把每个片段与对应 manpage 中提取出的选项说明进行匹配。结果会展示命令各部分的作用,适合阅读不熟悉的单行命令。
explainshell 可以免费使用吗?用的什么许可证?
explainshell 以 GPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
explainshell 还在维护吗?
半年内有更新。explainshell 最近一次提交是在 2026年8月26日。
explainshell 适合用来做什么?
在运行陌生的单行命令或管道前理解每个部分的作用。 审查脚本或文档中的 shell 命令。 基于 manpage 数据自建命令参考站点。 评估或比较基于 LLM 的 manpage 选项提取效果。
explainshell 怎么安装和运行?
克隆仓库: git clone https://github.com/idank/explainshell.git 安装 Python 依赖(按 README 在虚拟环境中进行): pip install -r requirements-dev.txt 下载线上数据库: make download-latest-db 启动 Web 服务器,然后打开 http://localhost:5000: make serve
在哪里获取 explainshell?
源代码和安装说明在 GitHub 上:https://github.com/idank/explainshell

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目