Marcio Cunha

Cómo capturar notas y tareas por CLI con Bash y Python

Aprende a construir un flujo de trabajo sin ratón usando scripts de Bash y Python integrados con Markdown para capturar notas y tareas directamente desde tu terminal.

Marcio Cunha•5 min
También disponible en:EnglishPortuguês
Resumen
  • Los flujos basados en terminal eliminan el cambio de ventanas y reducen la distracción diaria
  • Los scripts de Bash permiten crear accesos directos para inyectar texto plano en archivos estructurados
  • Los intérpretes de Python procesan etiquetas personalizadas y organizan metadatos en documentos Markdown
  • Las estructuras frontmatter estandarizadas garantizan compatibilidad total con editores de notas locales
  • La automatización continua de tareas en línea de comandos convierte la terminal en un centro de productividad

Por qué la terminal es el mejor lugar para capturar ideas

Cuando surge una idea en medio de una depuración de código o mientras revisamos registros del sistema, cada segundo gastado abriendo una aplicación gráfica con interfaz de ratón rompe nuestro razonamiento. El flujo sin ratón consiste en mantener las manos firmemente en el teclado, utilizando la terminal para ejecutar tareas administrativas, pruebas y anotaciones rápidas. En la práctica, esto significa escribir pequeñas rutinas que capturan el pensamiento y lo guardan de inmediato en archivos de texto plano, preservando el enfoque y la velocidad.

Trabajar con archivos Markdown —un formato de texto ligero que utiliza símbolos simples como asteriscos y etiquetas para títulos y listas— garantiza que tus notas sean duraderas, portátiles e independientes de software propietario. Antes de crear nuestros scripts de captura, vale la pena recordar que automatizar procesos locales suele ir de la mano con salvaguardar tus códigos, al igual que cuando aprendemos a revisar código con IA local antes de pull request usando Ollama, asegurando que nuestras herramientas operen siempre en armonía.

Construyendo el primer capturador de notas en Bash

Bash es el intérprete de comandos estándar en sistemas Unix y Linux, siendo ideal para crear utilidades rápidas que interactúan con el sistema de archivos. Para empezar, crearemos un script simple que recibe un argumento de texto en la terminal y lo añade automáticamente a un archivo de notas diarias, sumando la hora exacta para mantener un registro cronológico preciso. En la práctica, el script captura lo que escribes tras el comando y lo deposita al final de un archivo Markdown sin abrir ningún editor visual.

A continuación se muestra el código básico del script en Bash que realiza esta captura en milisegundos:

#!/usr/bin/env bash
NOTE_DIR="$HOME/Documents/Notes"
TODAY=$(date '+%Y-%m-%d')
FILE="$NOTE_DIR/$TODAY.md"

if [ ! -d "$NOTE_DIR" ]; then
  mkdir -p "$NOTE_DIR"
fi

echo "- [ ] $(date '+%H:%M') - $@" >> "$FILE"
echo "¡Nota añadida con éxito!"

Este pequeño bloque verifica si el directorio de notas existe, crea la carpeta si es necesario y adjunta la tarea con una casilla de verificación markdown vacía. Así, llevar el control de tus pendientes diarios se vuelve un hábito tan simple como pulsar enter tras redactar la línea de comandos.

Aunque Bash es excelente para tareas lineales de texto, cuando necesitamos manipular estructuras de datos más complejas, como extraer etiquetas, formatear encabezados o clasificar tareas por prioridad, Python entra como la herramienta perfecta. Python cuenta con una sintaxis limpia y bibliotecas nativas robustas para manipular archivos y expresiones regulares, permitiendo transformar una frase suelta en una tarea rica en metadatos dentro de tu bóveda de notas.

Procesando tareas complejas con Python

El siguiente script en Python lee un argumento de texto, identifica si hay marcas de prioridad y genera un bloque estructurado en Markdown:

import sys
import datetime
import os

def main():
    if len(sys.argv) < 2:
        print("Uso: note 'Tu nota aquí'")
        return
    
    content = " ".join(sys.argv[1:])
    now = datetime.datetime.now()
    date_str = now.strftime("%Y-%m-%d")
    time_str = now.strftime("%H:%M")
    
    note_path = os.path.expanduser(f"~/Documents/Notes/{date_str}.md")
    
    os.makedirs(os.path.dirname(note_path), exist_ok=True)
    
    with open(note_path, "a", encoding="utf-8") as f:
        f.write(f"- [ ] **{time_str}** - {content}\n")
        
    print(f"Tarea guardada en {date_str}.md")

if __name__ == "__main__":
    main()

Al ejecutar este script en la terminal, delegas el trabajo pesado de formato al intérprete, asegurando que todas las notas sigan rigurosamente el mismo estándar visual. Esta consistencia estructural es fundamental para mantener tus archivos organizados, conectando directamente con la disciplina de mantener sistemas limpios y predecibles —una prioridad constante que también aplicamos cuando buscamos rastrear fugas de memoria en APIs de Go con pprof para mantener el ecosistema saludable.

Integrando atajos y alias en tu entorno

Para que la captura de notas vía CLI sea realmente útil, acceder a estos scripts debe ser inmediato, sin escribir rutas largas en la terminal. La mejor manera de lograrlo es registrando funciones o alias en el archivo de configuración de tu shell, como .bashrc o .zshrc, convirtiendo tu script en un comando global del sistema.

Así es como puedes configurar un acceso rápido añadiendo una función al archivo de inicialización de la terminal:

  1. Abre tu archivo de configuración del shell con tu editor de texto preferido.
    nano ~/.zshrc
  2. Añade la función que invoca tu script de Python o Bash pasando los argumentos capturados.
    n() { python3 ~/bin/note.py "$@"; }
  3. Recarga la configuración de la terminal para aplicar los cambios de inmediato.
    source ~/.zshrc

Con esta configuración activa, basta escribir n "Revisar documentación de la API" desde cualquier lugar de tu sistema operativo para que la tarea se registre al instante en tu archivo de notas diarias. Este enfoque elimina barreras cognitivas y convierte la terminal en una extensión natural de tu pensamiento.

Consideraciones finales sobre el flujo sin ratón

Automatizar la captura de notas y tareas por CLI utilizando Bash y Python transforma la forma en que interactuamos con el conocimiento todos los días. Al eliminar el uso del ratón y apostar por herramientas de texto plano y Markdown, ganamos velocidad, portabilidad y control absoluto sobre nuestros datos. Construir estos pequeños scripts no solo optimiza el tiempo de desarrollo, sino que también consolida un entorno de trabajo minimalista y altamente eficiente.

Adoptar esta filosofía exige únicamente el hábito de registrar los pensamientos en el momento en que surgen, dejando que la automatización se encargue de la organización estructural en segundo plano. Con el tiempo, tu repositorio de notas se convertirá en un archivo valioso y perfectamente indexado, listo para ser consultado o procesado por herramientas auxiliares cuando lo necesites.