708 - Como dar Superpoderes a tu Terminal

708 - Como dar Superpoderes a tu Terminal

La IA que cambiará tu terminal Linux para siempre. Descubre cómo automatizar y potenciar tu productividad al máximo.

1:25
-3:15

Como bien sabes, paso la mayor tiempo en una terminal, y esto es para hacer la mayoría de lo que ves en el ecosistema atareao.es. Es mi hábitat natural. Me encuentro como pez en el agua. Sin embargo, como de costumbre, te tengo que hacer una confesión, que es, ni mas ni menos, que la Inteligencia Artificial ha venido a romper mi flujo de trabajo. Ahora, cuando quiero hacer cualquier cosa con un modelo de lenguaje, tengo que recurrir a un navegador, hacer mis consultas y regresar a la terminal. Esto como te puedes imaginar es un auténtico dolor para mi, es realmente molesto. Y es que indudablemente, los modelos de lenguaje son una auténtica ayuda, pero, romper el flujo, es algo que no me viene nada bien. Sin embargo, ¿Y si te dijera que puedes tener toda esa potencia directamente en tu línea de comandos?. Pues precisamente de esto va este nuevo episodio, de como puedes exprimir al máximo tu terminal. En definitiva Como dar Superpoderes a tu Terminal.

Como dar Superpoderes a tu Terminal

gemini-cli

Lo primero aclarar que es gemini-cli, y se trata de una interfaz de línea de comandos que te permite interactuar directamente con Gemini desde la terminal. Así de fácil y así de sencillo. Esto te da un gran potencial, porque digamos que estás mas pegado a tu sistema operativo, con lo que incluso puedes hacer determinadas operaciones directamente. Subir un archivo, o mover un archivo, puedes delegarlo directamente en Gemini.

Puedes utilizarlo de forma interactiva, o bien, directamente, redirigiendo la salida de otro comando o pasando el texto que quieras.

Características

Algunas de las características que tiene gemini-cli son las siguientes,

  • Asistencia de código avanzada. Puede leer, modificar y generar código en tus archivos locales. Puedes pedirle que explique funciones, escriba pruebas unitarias, depure errores e incluso ejecute comandos de compilación o de git.
  • Amplia ventana de contexto. Puede manejar más de 1 millón de tokens en contexto, lo que facilita el análisis de grandes bases de código.
  • Capacidades multimodales. Puede generar prototipos de aplicaciones a partir de archivos PDF o bocetos.
  • Automatización de tareas. Automatiza tareas operativas como la gestión de pull requests o la realización de rebases complejos.
  • Integración con herramientas. Se conecta con modelos de generación de medios como Imagen, Vídeo y Audio.
  • Búsqueda integrada. Utiliza la Búsqueda de Google para proporcionar respuestas actualizadas y fiables.
  • Generación de documentación. Puede crear documentos estructurados en Markdown, registros de cambios y respuestas a incidencias de GitHub.

Integración y configuración

Para instalarlo en Arch Linux, la forma más sencilla es utilizar un gestor para AUR (Arch User Repository) como yay o paru. Si tienes uno de ellos, puedes instalar gemini-cli con paru ejecutando el siguiente comando,

paru -S gemini-cli

Si no tienes un gestor de AUR, puedes hacerlo manualmente clonando el repositorio de AUR y compilándolo. También lo puedes instalar con npm o pnpm. En mi caso particular, probé a instalarlo desde AUR, y me dió un error, así que finalmente lo instalé con pnpm ejecutando el siguiente comando,

pnpm install -g @google/gemini-cli

En el caso de Ubuntu, la instalación recomendada es a través de npm, que lo instalará de forma global en tu sistema. Para esto, simplemente ejecuta los siguientes pasos,

sudo apt update && sudo apt install nodejs npm
npm install -g @google/gemini-cli

Despuéi de la instalación en cualquiera de los dos sistemas, puedes ejecutar la herramienta con el comando gemini.

Respecto a la configuración, indicarte que básicamente no necesitas configurar nada, o casi nada, excepto la clave API Key, en algunos casos, como es por ejemplo, cuando tienes que utilizar de forma no interactiva, o para algunos modelos específicos o cuando vas a realizar un uso intensivo o no comercial.

En general para uso personal y pruebas con el inicio de sesión con tu cuenta de Google es mas que suficiente. Si vas a realizar automatizaciones o un alto volumen de peticiones o similar necesitaras una API Key. En este caso simplemente tienes que exportar la de la siguiente forma,

export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

Y ahora ya puedes preguntar a Gemini cual es la razón de la desaparición de los dinosaurios.

Casos de uso

Vamos a lo importante y lo que seguro que estabas esperando como agua de Mayo, que son los casos de uso. Y vamos por partes.

Programación

Algunos ejemplos de lo que puedes hacer en referencia a la programación.

  • Generar script o fragmentos de código: gemini -p "dame un script en python que lea un csv y saque la media de la columna 'resultados'"
  • Explicar código complejo o heredado.
  • Traducir código de un lenguaje a otro (ej. de Bash a Python).
  • Sugerir cómo refactorizar una función.
  • ¡Generar mensajes de commit para git!: git diff | gemini -p "escribe un mensaje de commit para estos cambios"

Ayuda con el terminal

Otro caso de uso típico es que te explique que hace un determinado

  • Descifrar comandos, gemini -p "qué hace exactamente este comando: find . -name '*.log' -mtime +7 -exec rm {} \; "
  • Crear scripts de shell sobre la marcha. gemini -p "haz un script que cambie de formato todos las imágenes jpg a png"
#!/bin/bash

# Directorio donde buscar las imágenes (por defecto, el directorio actual)
TARGET_DIR="."

# Comprobar si el comando 'convert' está disponible
if ! command -v convert &> /dev/null
then
    echo "Error: El comando 'convert' (ImageMagick) no se encontró."
    echo "Por favor, instala ImageMagick para usar este script."
    echo "Ejemplo (Debian/Ubuntu): sudo apt install imagemagick"
    exit 1
fi

echo "Buscando imágenes JPG/JPEG en el directorio: $TARGET_DIR"

# Buscar archivos JPG y JPEG y convertirlos a PNG
find "$TARGET_DIR" -maxdepth 1 -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) | while read -r jpg_file
do
    # Obtener el nombre base del archivo sin extensión
    base_name=$(basename "$jpg_file" .jpg)
    base_name=$(basename "$base_name" .jpeg)

    # Construir el nombre del archivo PNG de salida
    png_file="$(dirname "$jpg_file")/${base_name}.png"

    echo "Convirtiendo '$jpg_file' a '$png_file'"
    convert "$jpg_file" "$png_file"

    if [ $? -eq 0 ]; then
        echo "Convertido exitosamente."
    else
        echo "Error al convertir '$jpg_file'."
    fi
done

echo "Proceso de conversión finalizado."
  • Preguntar por comandos de ffmpeg, imagemagick, awk, sed
  • Crear la estructura de un script o un simple html básico, a partir del que siguir trabajando tu, gemini -p "crea un html5 básico
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documento Básico HTML5</title>
</head>
<body>
    <h1>Hola, Mundo!</h1>
    <p>Este es un documento HTML5 básico.</p>
</body>
</html>

Documentación

Y por último, pero no menos importante, la documentación. Y es que la documentación es una parte fundamental de cualquier proyecto, aunque yo al menos siempre dejo de lado, porque siempre pienso que es para mi… Que error. Aquí también puedes exprimir al máximo gemini-cli. Algunos ejemplos,

  • Resumir el contenido de un fichero de texto. gemini -p "resume quijote.txt en 10 palabras"
  • Corregir la ortografía y gramática de un README.md. gemini -p "dime si hay una falta de ortografía en el archivo README.md
  • Generar documentación para una función o script. gemini -p "documenta el script 'script.sh'"

Conclusión

Como has podido ver, gemini-cli es una herramienta que te permite exprimir al máximo tu terminal, y que te da superpoderes. Puedes hacer prácticamente de todo, desde programar, hasta ayudarte con la documentación. Y lo mejor de todo, es que puedes hacerlo directamente desde la terminal, sin tener que romper tu flujo de trabajo.

En mi caso, ya la he metido dentro de mi flujo de trabajo, para las operaciones mas básicas en las que ya me venía ayudando, pero, en este caso, sin la necesidad de salirme de la terminal. Casos de uso, como preparar una escaleta, buscar el mejor título para un vídeo, o explicar un error en un log.


Más información,

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *