Un comando cd más inteligente que aprende cuáles son tus directorios más usados y te permite acceder a ellos con unas pocas teclas, en los principales shells.
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
Clona el repositorio
git clone https://github.com/idank/explainshell.git - 2
Instala las dependencias de Python en un virtualenv, tal como se describe en el README
pip install -r requirements-dev.txt - 3
Descarga la base de datos actualizada
make download-latest-db - 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
Script de Bash compatible con POSIX para instalar y alternar entre varias versiones de Node.js por usuario y por shell.
Buscador difuso de propósito general para la línea de comandos que filtra cualquier lista de entrada y convierte los scripts de shell en selectores interactivos para la terminal.
Un prompt minimalista y personalizable para distintos shells, escrito en Rust, que muestra información relevante del proyecto y del entorno.
Herramienta basada en JavaScript para escribir scripts al estilo de shell, con una capa sobre child_process que escapa argumentos de forma segura e incluye utilidades multiplataforma.
Biblioteca de Python para crear aplicaciones CLI a partir de anotaciones de tipos estándar, con ayuda, validación y autocompletado de shell automáticos.