
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.
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,
Muy interesante esta herramienta en terminal. Mil gracias por acercarnos el conocimiento. Algún día nuestra gratitud tendrá que alcanzarte.