Inicio Apuntes FPApuntes DAMAcceso a DatosChuletario, una chuleta interactiva de comandos Linux para la terminal

Chuletario, una chuleta interactiva de comandos Linux para la terminal

Publicado por
about chuletario

Una vez más aquí. Hoy vengo a dejar un pequeño programa que tenía a medio hacer es el disco de este equipo. El caso es que como tengo un dolor de mandíbula que no veo, pues me puse a añadirle cosas, y como ya no se me ocurre que más añadir, pues me decidí a subirlo … para tenerlo en algún sitio localizable, ya que el disco de este portátil se está muriendo. Bueno, el caso es que se trata de un pequeño programa de terminal para tomar apuntes sobre comandos de linux. El programa se llama Chuletario, que en su día giró a DiccioPynton (cuando le puse una interfaz gráfica y todas las mierdecillas que le puse en su día).

Si administras servidores o estudias administración de sistemas Linux, seguro que has acumulado notas sueltas por todas las esquinas de tu mesa: un grep aquí, un systemctl allá, un tar que solo usas dos veces al año. Chuletario reúne más de 420 comandos en 12 categorías (redes, logs, paquetes, Bash, usuarios, archivos…) y los presenta en una aplicación de terminal hecha con Python: tabla con colores, búsqueda, edición y hasta exportación a PDF. Comandos que se pueden ir ampliando a medida que nos va haciendo falta de forma muy sencilla y rápida.

En las siguientes líneas, vamos a ver qué es el proyecto, cómo funciona para el usuario y cómo está organizado el código por dentro — útil si quieres usarlo, contribuir o aprender de una arquitectura modular en Python.

¿Qué es Chuletario y para quién sirve?

Como decía, Chuletario es una chuleta interactiva de comandos Linux orientada a sysadmins, estudiantes de cursos de Linux y cualquier persona que quiera un recordatorio rápido en terminal sin abrir el navegador.

A diferencia de una página web estática o un PDF fijo, Chuletario permite:

  • Consultar comandos por categoría (Procesos, Redes, Sistema, Bash…).
  • Buscar por nombre, descripción, ejemplo o notas.
  • Añadir, editar y eliminar entradas; los cambios se guardan en archivos JSON.
  • Exportar toda la colección a Markdown o PDF.
  • Usar una interfaz TUI (terminal gráfica) con filtro por categoría y panel de detalle.
  • Ver advertencias en comandos delicados (rmdd, etc.), con notas personalizadas o detección automática.

No sustituye la documentación oficial (man), pero acelera el día a día y te deja construir tu chuleta personalizada. Nos va permitir guardar comandos que por el motivo que sea no quieres que salgan de tu equipo y acaben en los servidores de la IA de turno.

Cómo ejecutar Chuletario (sin complicaciones)

Solo necesitas Python 3.10+ instalado en tu equipo. El proyecto incluye un launcher, run_app.py, que va a:

  1. Crear el entorno virtual .venv si no existe.
  2. Instalar dependencias desde requirements.txt (richtextualreportlab).
  3. Arrancar la aplicación con el Python del venv.

Para ello, en una terminal basta con utilizar lo siguientes comandos:

git clone https://github.com/entreunosyceros/chuletario.git

cd chuletario

python run_app.py

En Windows, usa py run_app.py o Windows Terminal; la chuleta funciona para consultar y editar, aunque muchos ejemplos Linux requieran WSL para ejecutarlos.

Menú principal (CLI)

chuletario CLI

Desde el menú, accedes a diferentes opciones con las teclas:

  • buscar (B)
  • añadir/editar/eliminar (A / D / X)
  • exportar (M / P)
  • recargar JSON (R)
  • abrir TUI (T)
  • ver una categoría (1-12)
  • salir (0)

Interfaz TUI (Interfaz de Usuario de Texto)

chuletario TUI

Ideal para pantallas grandes. Incluye; filtro por categoría, búsqueda en vivo, tabla de comandos y panel lateral con descripción, ejemplo, advertencias y botones Ver ayuda (man) y Abrir docs.

Arquitectura del proyecto: datos y código separados

Una decisión clave para el mantenimiento: los comandos viven en modules/*.json y la lógica en el paquete app/.

chuletario/
├── main.py                 # Punto de entrada
├── run_app.py              # Launcher (venv + pip + arranque)
├── requirements.txt        # Dependencias Python
├── README.md
├── LICENSE                 # Licencia MIT
├── .gitignore
├── .venv/                  # Entorno virtual (se crea al usar run_app.py; no en git)
├── img/
│   └── Chuletario.png      # Imagen del repositorio
├── modules/                # Datos: un JSON por área (solo comandos)
│   ├── almacenamiento.json
│   ├── archivos.json
│   ├── backups.json
│   ├── bash.json
│   ├── logs.json
│   ├── paquetes.json
│   ├── permisos.json
│   ├── procesos.json
│   ├── redes.json
│   ├── servicios.json
│   ├── sistema.json
│   └── usuarios.json
└── app/                    # Código Python
    ├── __init__.py
    ├── paths.py            # Rutas del proyecto (multiplataforma)
    ├── platform.py         # Ajustes de consola (UTF-8, ANSI en Windows)
    ├── constants.py        # Constantes, créditos, reglas de peligro
    ├── console.py          # Consola Rich y pausas
    ├── storage.py          # Carga y guardado de modules/*.json
    ├── items.py            # Campos opcionales y búsqueda en entradas
    ├── ayuda.py            # man, documentación web, créditos
    ├── advertencias.py     # Avisos explícitos e inferidos
    ├── catalog.py          # Categorías, resolvers y ayudas CLI
    ├── crud.py             # Crear, editar, eliminar, duplicados
    ├── cli/
    │   ├── __init__.py
    │   ├── menu.py         # Menú principal
    │   └── actions.py      # Buscar, exportar, CRUD, créditos…
    └── tui/
        ├── __init__.py
        ├── forms.py        # Modales (añadir, editar, duplicados, créditos)
        └── app.py          # Aplicación Textual (tabla, filtros, detalle)

Así cualquiera puede ampliar la chuleta editando un JSON (por ejemplo bash.json para scripts de automatización) sin tocar Python, o mejorar la app sin mezclar datos con código. Aun que bueno, también se pueden aumentar los comandos guardados en los archivo json desde la propia aplicación … vamos que esto se puede ampliar de forma muy sencilla …

Las partes más importantes del código

1. app/storage.py — El corazón de los datos

Al iniciar, cargar_modulos() recorre modules/, lee cada .json y construye:

  • COMANDOS: diccionario categoría → lista de entradas.
  • ORIGEN: mapa categoría → ruta del archivo para saber dónde guardar al editar.

Cada entrada tiene la forma:

{
  "comando": "ss",
  "descripcion": "Sockets y conexiones",
  "ejemplo": "ss -tulpn",
  "notas": "Opcional",
  "peligro": false,
  "docs": "https://..."
}

guardar_categoria() persiste solo la categoría modificada en su JSON original. Eso evita reescribir todo el proyecto en cada inicio.

Las rutas usan app/paths.py (PROJECT_ROOTMODULES_DIR), así el programa encuentra los JSON aunque ejecutes desde otra carpeta — importante en Windows.

2. app/catalog.py — Navegar la chuleta

Funciones como resolver_categoria() y resolver_comando() permiten elegir por número o nombre (insensible a mayúsculas). buscar_comando_global() detecta duplicados al crear comandos.

Esta capa desacopla la UI (CLI/TUI) del formato interno de los datos.

3. app/crud.py — Crear, editar y eliminar

  • crear_comando() / eliminar_item() / aplicar_edicion() modifican COMANDOS y llaman a guardar_categoria().
  • resolver_duplicado_al_añadir() gestiona conflictos: editar el existente, reemplazar o cancelar.

La lógica de negocio está centralizada; CLI y TUI solo llaman a estas funciones.

4. app/advertencias.py — Seguridad visual

Combina:

  • Campos explícitos: notaspeligro.
  • Heurística automática (binarios como rm, patrones en ejemplos tipo rm -rf).

La CLI muestra columna de advertencias; la TUI marca filas con ⚠ y detalla en el panel lateral. Misma regla en ambas interfaces gracias a texto_advertencias_item().

5. app/cli/ — Experiencia con Rich

  • menu.py: bucle del menú principal y tablas de categorías/acciones.
  • actions.py: buscar, exportar MD/PDF, CRUD, créditos, mostrar categoría.

Rich aporta tablas, paneles y prompts legibles.

6. app/tui/ — Interfaz Textual

  • app.py: clase ChuletarioTUI, tabla filtrable, selector de categoría, panel de detalle.
  • forms.py: modales para añadir/editar con vista previa de advertencias.

La TUI usa cursor_type="row" en la tabla para actualizar el detalle al mover el cursor. Esto mejora la experiencia frente a un listado estático.

7. app/ayuda.py y app/platform.py — Multiplataforma

  • abrir_man()man en Linux/macOS; en Windows, WSL o documentación en navegador (man7.org).
  • platform.py: UTF-8 y colores ANSI en consola Windows al arrancar.

8. run_app.py — Punto de entrada amigable

Orquesta venv, comprobación de dependencias (hash de requirements.txt) y mensajes informativos paso a paso. Es la puerta de entrada recomendada para usuarios que clonan el repo por primera vez.

9. main.py — Arranque mínimo

Solo configura el entorno y llama a menu(). Separación clara: launcher vs aplicación.


Tecnologías utilizadas (y por qué importan)

LibreríaUso en Chuletario
RichMenú CLI, tablas, colores, prompts
TextualTUI: tablas, formularios, modales
ReportLabExportación PDF
JSON (stdlib)Base de datos ligera y editable
venv + pipEntorno aislado vía run_app.py

Categorías disponibles (contenido de la chuleta)

Entre otras: Procesos, Permisos, Servicios, Paquetes, Sistema, Almacenamiento, Backups, Logs, Redes, Usuarios y grupos, Archivos y carpetas y Bash (construcciones para scripts de automatización: set -euo pipefailtrapgetopts, arrays, etc.).

Puedes proponer nuevas categorías enviando un archivo JSON al repositorio o ampliando los tuyos en local.


Preguntas frecuentes (FAQ)

¿Chuletario ejecuta los comandos por mí?

Puede lanzar un comando en tu shell (E en CLI), pero su valor principal es consultar y gestionar la chuleta. En Windows, los ejemplos Linux suelen requerir WSL para ejecutarlos.

¿Necesito saber programar para usarlo?

No. Si sabes clonar un repo y ejecutar python run_app.py, puedes usarlo. Programar ayuda si quieres añadir categorías vía código.

¿Puedo usarlo sin conexión a internet?

Sí, salvo abrir documentación web o man online en Windows sin WSL.

¿Es código abierto?

Sí, licencia MIT. Puedes usarlo, modificarlo y redistribuirlo según la licencia.

Conclusión: una chuleta Linux que crece contigo

Chuletario no es solo una lista de comandos. La idea es tener una herramienta de terminal para organizar, buscar, personalizar y exportar tu conocimiento de Linux. Su código modular —JSON en modules/, lógica en app/— facilita el mantenimiento y las contribuciones.

Si a alguien le apetece probar esta pequeña aplicación, solo tiene que descargar el código fuente del repositorio en GitHub en el que he subido el proyecto y probarlo en su equipo.

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.