Repolode
idank

idank/explainshell

各引数をmanページの説明に照合し、シェルコマンドの意味を解説するWebツール兼Pythonライブラリ。

スター
14,297
フォーク
854
未解決の Issue
57
最終コミット
2 か月前

これは何?

explainshellは、フラグや引数を含むパイプラインなどのシェルコマンドを受け取り、bashlexでASTにパースしたうえで、各トークンを対応するmanページから抽出したオプションの説明に照合します。その結果、コマンドのどの部分が何をするのかが表示されるため、見慣れないワンライナーを読むときに役立ちます。

manページの解析にはroffマクロを使う方法と、元のソーステキスト内の行範囲を返すLLMベースの抽出器を使う方法があります。そのため、表示される説明文は生成されたものではなく、manページから切り出したものです。処理済みのmanページは単一のSQLiteデータベースに保存され、FlaskのWebインターフェースで照合結果を表示します。パイプや&&などのシェル演算子も個別のノードとして扱います。

リポジトリには、manページデータの抽出、差分比較、調査を行う管理用CLIのほか、LLMによる抽出とmandocのMarkdownレンダリングを評価するハーネスも含まれています。公開データベースはGitHub Releasesで配布されており、その内容には各manページの上流ライセンスが適用されます。

主な機能

  • 01シェルコマンドの各引数を、manページに記載されたオプションの説明に照合します。
  • 02コマンドラインをASTにパースし、パイプや&&などのシェル演算子を処理します。
  • 03roffマクロ、またはソースの行範囲を返すLLMを使ってオプションを抽出します。
  • 04処理済みのmanページを単一のSQLiteデータベースに保存し、Flask製のWebインターフェースを提供します。
  • 05manページデータの抽出、差分比較、検索を行うCLIを備えています。

ユースケース

  • 見慣れないワンライナーやパイプラインを実行する前に内容を理解する。
  • スクリプトやドキュメント内のシェルコマンドを確認する。
  • manページデータを使ったセルフホスト型のコマンドリファレンスを構築する。
  • LLMベースのmanページオプション抽出を評価・比較する。

クイックスタート

  1. 1

    リポジトリをクローンする

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

    READMEの説明に従って、virtualenv内にPythonの依存関係をインストールする

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

    最新のデータベースをダウンロードする

    make download-latest-db
  4. 4

    Webサーバーを起動し、http://localhost:5000 を開く

    make serve

使う前に知っておきたいこと

  • コードはGPLv3ライセンスのため、派生物を配布する場合もGPLv3にする必要があります。
  • 公開されているデータベースには、それぞれ独自のライセンスが適用される上流のmanページが含まれています。そのため、再配布するには、ご自身でライセンス遵守状況を確認する必要があります。
  • 新しいmanページを抽出するには、CodexなどのLLMプロバイダー、またはOpenAI APIキーへのアクセスが必要です。

トピック

よくある質問

explainshell とは?
各引数をmanページの説明に照合し、シェルコマンドの意味を解説するWebツール兼Pythonライブラリ。 explainshellは、フラグや引数を含むパイプラインなどのシェルコマンドを受け取り、bashlexでASTにパースしたうえで、各トークンを対応するmanページから抽出したオプションの説明に照合します。その結果、コマンドのどの部分が何をするのかが表示されるため、見慣れないワンライナーを読むときに役立ちます。
explainshell は無料で使えますか?ライセンスは?
explainshell は GPL-3.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
explainshell は今もメンテナンスされていますか?
半年以内に更新あり。explainshell の最終コミットは 2026年8月26日 です。
explainshell は何に使えますか?
見慣れないワンライナーやパイプラインを実行する前に内容を理解する。 スクリプトやドキュメント内のシェルコマンドを確認する。 manページデータを使ったセルフホスト型のコマンドリファレンスを構築する。 LLMベースのmanページオプション抽出を評価・比較する。
explainshell のインストール方法は?
リポジトリをクローンする: git clone https://github.com/idank/explainshell.git READMEの説明に従って、virtualenv内にPythonの依存関係をインストールする: pip install -r requirements-dev.txt 最新のデータベースをダウンロードする: make download-latest-db Webサーバーを起動し、http://localhost:5000 を開く: make serve
explainshell はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/idank/explainshell

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト