Repolode
idank

idank/explainshell

Herramienta web y biblioteca de Python que explican comandos de shell relacionando cada argumento con la descripción correspondiente de la manpage.

Estrellas
14,297
Forks
854
Issues abiertos
57
Último commit
hace 2 meses

¿Qué es?

explainshell recibe una línea de comandos de shell, como una tubería con flags y argumentos, la convierte en un AST con bashlex y relaciona cada token con las descripciones de las opciones extraídas de la manpage correspondiente. El resultado muestra para qué sirve cada parte del comando, algo útil al leer comandos de una sola línea que no conoces.

El proyecto analiza las manpages mediante macros roff o un extractor basado en LLM que devuelve rangos de líneas del texto fuente original. Así, el texto de ayuda que se muestra se extrae de la manpage, en lugar de generarse. Las manpages procesadas se almacenan en una única base de datos SQLite y una interfaz web basada en Flask muestra las coincidencias. También gestiona operadores de shell como las tuberías y && como nodos independientes.

El repositorio incluye una CLI de gestión para extraer, comparar diferencias e inspeccionar datos de manpages, además de herramientas de evaluación para la extracción con LLM y la generación de Markdown con mandoc. La base de datos activa se distribuye mediante GitHub Releases y su contenido está sujeto a las licencias originales de cada manpage.

Funciones clave

  • 01Relaciona cada argumento de un comando de shell con la descripción de su opción en la manpage.
  • 02Convierte las líneas de comandos en un AST para gestionar tuberías, && y otros operadores de shell.
  • 03Extrae opciones mediante macros roff o con un LLM que devuelve rangos de líneas del texto fuente.
  • 04Almacena las manpages procesadas en una única base de datos SQLite y ofrece una interfaz web basada en Flask.
  • 05Incluye una CLI para extraer, comparar diferencias y consultar datos de manpages.

Casos de uso

  • Entender un comando de una sola línea o una tubería que no conoces antes de ejecutarlos.
  • Revisar comandos de shell en scripts o documentación.
  • Crear una referencia de comandos autoalojada basada en datos de manpages.
  • Evaluar o comparar la extracción de opciones de manpages basada en LLM.

Inicio rápido

  1. 1

    Clona el repositorio

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

    Instala las dependencias de Python en un virtualenv, tal como se describe en el README

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

    Descarga la base de datos actualizada

    make download-latest-db
  4. 4

    Ejecuta el servidor web y abre http://localhost:5000

    make serve

Antes de usarlo

  • El código está bajo la licencia GPLv3, por lo que las distribuciones derivadas también deben estar bajo GPLv3.
  • La base de datos publicada incluye páginas de manual originales sujetas a sus propias licencias. Por ello, para redistribuirla debes revisar por tu cuenta el cumplimiento de las licencias.
  • Para extraer nuevas páginas de manual, necesitas acceso a un proveedor de LLM como Codex o una clave de API de OpenAI.

Temas

Preguntas frecuentes

¿Qué es explainshell?
Herramienta web y biblioteca de Python que explican comandos de shell relacionando cada argumento con la descripción correspondiente de la manpage. explainshell recibe una línea de comandos de shell, como una tubería con flags y argumentos, la convierte en un AST con bashlex y relaciona cada token con las descripciones de las opciones extraídas de la manpage correspondiente. El resultado muestra para qué sirve cada parte del comando, algo útil al leer comandos de una sola línea que no conoces.
¿explainshell es gratuito? ¿Qué licencia tiene?
explainshell es open source bajo la licencia GPL-3.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿explainshell sigue mantenido?
Actualizado en los últimos 6 meses. El último commit de explainshell fue el 26 ago 2026.
¿Para qué puedo usar explainshell?
Entender un comando de una sola línea o una tubería que no conoces antes de ejecutarlos. Revisar comandos de shell en scripts o documentación. Crear una referencia de comandos autoalojada basada en datos de manpages. Evaluar o comparar la extracción de opciones de manpages basada en LLM.
¿Cómo se instala explainshell?
Clona el repositorio: git clone https://github.com/idank/explainshell.git Instala las dependencias de Python en un virtualenv, tal como se describe en el README: pip install -r requirements-dev.txt Descarga la base de datos actualizada: make download-latest-db Ejecuta el servidor web y abre http://localhost:5000: make serve
¿Dónde consigo explainshell?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/idank/explainshell

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados