Repolode
idank

idank/explainshell

Ferramenta web e biblioteca Python que explicam comandos de shell associando cada argumento ao texto de ajuda correspondente na manpage.

Estrelas
14,297
Forks
854
Issues abertas
57
Último commit
há 2 meses

O que é?

explainshell recebe uma linha de comando de shell, como um pipeline com flags e argumentos, analisa o comando em uma AST usando bashlex e associa cada token às descrições das opções extraídas da manpage correspondente. O resultado mostra a função de cada parte do comando, o que é útil para entender comandos de uma linha desconhecidos.

O projeto analisa manpages usando macros roff ou um extrator baseado em LLM que retorna intervalos de linhas no texto-fonte original; assim, o texto de ajuda exibido é extraído da manpage, em vez de ser gerado. As manpages processadas são armazenadas em um único banco de dados SQLite, e uma interface web em Flask exibe as correspondências. O projeto também trata operadores de shell, como pipes e &&, como nós separados.

O repositório inclui uma CLI de gerenciamento para extrair, comparar diferenças e inspecionar dados de manpages, além de ferramentas de avaliação para extração com LLM e renderização de Markdown com mandoc. O banco de dados atualizado é distribuído pelas releases do GitHub, e seu conteúdo está sujeito às licenças originais de cada manpage.

Recursos principais

  • 01Associa cada argumento de um comando de shell à descrição da opção correspondente na manpage.
  • 02Analisa linhas de comando em uma AST para lidar com pipes, && e outros operadores de shell.
  • 03Extrai opções de macros roff ou com um LLM que retorna intervalos de linhas do texto-fonte.
  • 04Armazena manpages processadas em um único banco de dados SQLite, com uma interface web feita em Flask.
  • 05Oferece uma CLI para extrair, comparar diferenças e consultar dados de manpages.

Casos de uso

  • Entender um comando de uma linha ou pipeline desconhecido antes de executá-lo.
  • Revisar comandos de shell em scripts ou documentação.
  • Criar uma referência de comandos auto-hospedada com base em dados de manpages.
  • Avaliar ou comparar a extração de opções de manpages baseada em LLM.

Início rápido

  1. 1

    Clone o repositório

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

    Instale as dependências do Python em um virtualenv, conforme descrito no README

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

    Baixe o banco de dados atualizado

    make download-latest-db
  4. 4

    Execute o servidor web e abra http://localhost:5000

    make serve

Antes de usar

  • O código é licenciado sob GPLv3, portanto distribuições derivadas também devem ser licenciadas sob GPLv3.
  • O banco de dados disponibilizado contém páginas de manual originais, cada uma sujeita à sua própria licença. Portanto, para redistribuí-lo, você precisa fazer sua própria análise de conformidade com as licenças.
  • Para extrair novas páginas de manual, é necessário ter acesso a um provedor de LLM, como o Codex, ou uma chave da API da OpenAI.

Tópicos

Perguntas frequentes

O que é explainshell?
Ferramenta web e biblioteca Python que explicam comandos de shell associando cada argumento ao texto de ajuda correspondente na manpage. explainshell recebe uma linha de comando de shell, como um pipeline com flags e argumentos, analisa o comando em uma AST usando bashlex e associa cada token às descrições das opções extraídas da manpage correspondente. O resultado mostra a função de cada parte do comando, o que é útil para entender comandos de uma linha desconhecidos.
explainshell é gratuito? Qual é a licença?
explainshell é open source sob a licença GPL-3.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
explainshell ainda é mantido?
Atualizado nos últimos 6 meses. O último commit de explainshell foi em 26 de ago. de 2026.
Para que posso usar explainshell?
Entender um comando de uma linha ou pipeline desconhecido antes de executá-lo. Revisar comandos de shell em scripts ou documentação. Criar uma referência de comandos auto-hospedada com base em dados de manpages. Avaliar ou comparar a extração de opções de manpages baseada em LLM.
Como instalar explainshell?
Clone o repositório: git clone https://github.com/idank/explainshell.git Instale as dependências do Python em um virtualenv, conforme descrito no README: pip install -r requirements-dev.txt Baixe o banco de dados atualizado: make download-latest-db Execute o servidor web e abra http://localhost:5000: make serve
Onde consigo explainshell?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/idank/explainshell

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados