Cuando abres una terminal por primera vez, tu vocabulario puede limitarse a ls y cd. Pero el mundo CLI está repleto de herramientas que pueden cambiar drásticamente la velocidad a la que trabajas — si sabes que existen.
Este artículo organiza las herramientas CLI que todo desarrollador debería conocer, por categoría. Las herramientas clásicas que llevan desde los 90 están junto a sus reemplazos modernos escritos en Rust, para que puedas ver qué ha cambiado y por qué.
Operaciones con archivos y navegación
Los fundamentos. Listar archivos, moverte, copiar, eliminar — todo empieza aquí.
Clásico: ls / cd / cp / mv / rm
Parte de GNU coreutils (última versión: 9.10, febrero 2026). Preinstalado en todas las distribuciones Linux.
ls -alh # Listado detallado con tamaños legibles
cd ~/projects # Cambiar de directorio
cp -r src/ dst/ # Copiar directorio recursivamente
mv old.txt new.txt # Renombrar / mover
rm -rf build/ # Eliminar directorio (usar con precaución)
Moderno: eza + zoxide
eza (v0.23.4) es un reemplazo en Rust de ls. Salida en color, integración con estado de Git y vista de árbol vienen integrados.
eza -la --git # Listar con estado de Git
eza --tree --level=2 # Vista de árbol (2 niveles de profundidad)
zoxide (v0.9.9) reemplaza cd. Recuerda los directorios que has visitado y te permite saltar a ellos escribiendo un fragmento de la ruta.
z proj # Salta a ~/projects (si has hecho cd ahí antes)
zi # Selección interactiva
# Dentro de WSL, sigue los pasos de Linux
# O directamente en PowerShell:
winget install eza-community.eza
winget install ajeetdsouza.zoxide
Búsqueda y procesamiento de texto
Buscar en logs, editar archivos de configuración, procesar JSON. La manipulación de texto es el pan de cada día del desarrollador.
Clásico: grep / sed / awk
grep -rn "TODO" src/ # Búsqueda recursiva con números de línea
sed -i 's/old/new/g' file.txt # Buscar y reemplazar en el archivo
awk '{print $1, $3}' data.tsv # Extraer columnas 1 y 3
grep es uno de los comandos más usados, pero se ralentiza notablemente en bases de código grandes.
→ Detalles: Guía completa de grep: desde lo básico hasta ripgrep / Guía práctica de sed y awk
Moderno: ripgrep + fd + bat + jq
ripgrep (v15.1.0) es un reemplazo en Rust de grep. Respeta .gitignore por defecto y es significativamente más rápido en repositorios grandes.
rg "TODO" --type js # Buscar solo archivos JS
rg "function \w+" -c # Contar coincidencias
fd (v10.4.0) reemplaza find. Sintaxis más simple y respeto de .gitignore por defecto.
fd "\.mdx$" content/ # Encontrar archivos .mdx
fd -e json -x jq '.version' # Encontrar archivos JSON y procesar con jq
bat (v0.26.1) reemplaza cat. Resaltado de sintaxis, números de línea e integración de diff de Git de serie.
bat src/index.ts # Mostrar con resaltado de sintaxis
bat -d file.txt # Mostrar solo cambios de Git
jq (v1.8.1) es la navaja suiza para JSON. Esencial para trabajar con respuestas de API.
curl -s https://api.github.com/repos/jqlang/jq | jq '.stargazers_count'
cat package.json | jq '.dependencies | keys'
→ Detalles: Guía completa de jq / Herramientas CLI modernas en Rust
# Dentro de WSL, sigue los pasos de Linux
# En PowerShell:
winget install BurntSushi.ripgrep.MSVC
winget install sharkdp.fd
winget install sharkdp.bat
winget install jqlang.jq
Descarga y red
Descargar archivos, llamar APIs, comunicarse con servidores remotos.
wget — El caballo de batalla de las descargas por lotes
Destaca en descargas recursivas, reanudación de transferencias interrumpidas y espejado de sitios. La herramienta de referencia para descargar archivos en un servidor.
wget -c https://example.com/large.iso # Reanudar descarga interrumpida
wget -i urls.txt -P ~/downloads/ # Descarga por lotes desde lista de URLs
wget --mirror --convert-links https://example.com/ # Espejar un sitio
Últimas versiones: wget 1.25.0 / wget2 2.2.1. wget2 incluye una corrección para CVE-2025-69194 (CVSS 8.8) — actualiza si lo usas.
→ Detalles: Guía completa de wget
curl — La herramienta HTTP universal
Donde wget se especializa en descargas, curl maneja toda la comunicación HTTP. Llamadas API, inspección de cabeceras, subida de archivos — hace de todo.
curl -s https://api.example.com/data | jq '.' # Obtener API y formatear JSON
curl -I https://example.com # Obtener solo cabeceras
curl -X POST -d '{"key":"value"}' -H "Content-Type: application/json" https://api.example.com
Última versión: curl 8.18.0 (enero 2026). Incluye correcciones para 3 CVEs descubiertos por IA. Ejecuta curl --version para verificar la tuya.
→ Detalles: Guía completa de curl
Personalización del shell
alias — Atajos de comandos
Acorta comandos largos que escribes repetidamente. La eficiencia del shell empieza aquí.
alias gs='git status'
alias dc='docker compose'
alias ll='ls -alh --color=auto'
→ Detalles: Guía completa de alias
Elegir un shell: bash vs zsh vs fish
| Shell | Característica clave |
|---|---|
| bash | Disponible en todas partes. Mejor compatibilidad de scripts |
| zsh | Compatible con bash + autocompletado potente. Por defecto en macOS |
| fish | Funciona genial de entrada. No compatible con bash |
Si usas zsh, el plugin git de oh-my-zsh solo añade más de 150 alias.
fzf — Buscar todo de forma difusa
fzf (v0.70.0) es un buscador difuso interactivo. Selección de archivos, búsqueda del historial de comandos, cambio de ramas de Git — se integra con todo.
# Buscar difusamente un archivo y abrirlo en vim
vim $(fzf)
# Buscar historial de comandos (Ctrl+R mejorado)
# Después de instalar fzf, Ctrl+R lo usa automáticamente
→ Detalles: Guía completa de fzf
# Dentro de WSL, sigue los pasos de Linux
winget install junegunn.fzf
Flujo de trabajo de desarrollo
tmux — Multiplexación de terminal
tmux (v3.6a) gestiona múltiples paneles y ventanas dentro de una sola terminal. Mantiene las sesiones vivas por SSH, haciéndolo esencial para el trabajo en servidores.
tmux new -s work # Iniciar una sesión llamada "work"
# Ctrl+b % — Dividir horizontalmente
# Ctrl+b " — Dividir verticalmente
# Ctrl+b d — Desconectar de la sesión
tmux attach -t work # Readjuntar a la sesión
→ Detalles: Guía completa de tmux
# Dentro de WSL, sigue los pasos de Linux
# No disponible nativamente en Windows
ssh / rsync — Operaciones con servidores remotos
ssh user@server # Conexión remota
ssh -L 8080:localhost:3000 user@server # Reenvío de puertos
rsync -avz ./dist/ user@server:/var/www/ # Sincronizar solo archivos modificados
→ Detalles: Guía práctica de ssh y rsync
Git — Control de versiones
Git no necesita presentación, pero hay herramientas que hacen el Git por CLI más rápido.
# lazygit — TUI de Git dentro de tu terminal
# delta — git diff con resaltado de sintaxis
git diff | delta
Alternativas modernas (la generación Rust)
Hay una ola creciente de proyectos que reescriben las herramientas clásicas de GNU en Rust. En 2026, Ubuntu avanza con planes de reemplazar GNU coreutils con la implementación en Rust uutils.
| Clásico | Moderno | Lenguaje | Mejora clave |
|---|---|---|---|
| ls | eza | Rust | Color, integración Git, vista de árbol |
| cat | bat | Rust | Resaltado de sintaxis, números de línea, paginador |
| grep | ripgrep | Rust | Velocidad, soporte .gitignore |
| find | fd | Rust | Sintaxis simple, rápido |
| cd | zoxide | Rust | Salto basado en aprendizaje |
| sed | sd | Rust | Sintaxis regex más simple |
| du | dust | Rust | Uso de disco visual |
| top | bottom | Rust | Monitor de sistema moderno |
No necesitas todas. Empieza con ripgrep + fd + bat — esas tres te mostrarán la diferencia inmediatamente. Las instrucciones de instalación para cada herramienta están en las secciones relevantes de arriba.
→ Detalles: Herramientas CLI modernas en Rust: eza, bat, fd, zoxide y más
Conclusión
| Categoría | Aprende primero | Prueba después |
|---|---|---|
| Operaciones con archivos | ls, cd, cp, mv | eza, zoxide |
| Búsqueda de texto | grep, find | ripgrep, fd, bat |
| Procesamiento JSON | — | jq |
| Descargas | wget, curl | — |
| Configuración del shell | alias, .bashrc | fzf, oh-my-zsh |
| Desarrollo | git, ssh | tmux, lazygit |
Las habilidades CLI se transfieren entre sistemas operativos. Las aplicaciones GUI van y vienen, pero los comandos permanecen.
Guarda esta página en marcadores y vuelve cuando quieras probar algo nuevo.