La línea de comandos sigue siendo el lugar más rápido para buscar, filtrar y manipular código. Sin embargo, las herramientas Unix históricas — grep, find, cat — datan de una época sin .gitignore, sin directorios node_modules de 400 MB y sin salida en color. Una generación de sustitutos se ha impuesto en los entornos de desarrollo web. Panorama de los que realmente se ganan un sitio en un $PATH.
brew install o un paquete apt, y ninguno exige configuración previa: son útiles desde la primera orden.Buscar y filtrar
ripgrep — la búsqueda que grep debería haber sido
rg busca recursivamente una expresión regular respetando automáticamente el .gitignore, ignora los ficheros binarios y colorea su salida. Escrito en Rust por Andrew Gallant, es el motor de búsqueda por defecto de Visual Studio Code, lo que garantiza un uso a gran escala.
# Buscar una llamada de función en todo el proyecto, sin pasar por node_modules
rg "wp_enqueue_script" --type php
# Listar los ficheros que coinciden
rg -l "TODO" src/
# Expresión regular con captura, sustitución mostrada sin escribir
rg "version: (d+.d+)" --replace 'v$1'La diferencia con grep -r no es solo la velocidad bruta sino el respeto del .gitignore: en un monorepo, grep dedica segundos a recorrer vendor/ y node_modules/ que rg ignora por defecto. El repositorio oficial documenta los filtros por tipo de fichero.
Lo que aporta ripgrep no es comodidad de escritura: es la velocidad a la que se comprende una base de código desconocida.
fd — encontrar un fichero sin recitar la sintaxis de find
find es potente y su sintaxis es punitiva. fd, escrito por David Peter, resuelve el caso corriente de forma sencilla: sintaxis legible, salida en color, respeto del .gitignore.
# Todos los ficheros SCSS
fd -e scss
# Encontrar y eliminar los .DS_Store residuales
fd -H '^.DS_Store$' -X rm
# Buscar un directorio concreto
fd -t d migrationsfzf — el filtro difuso que se compone
fzf, de Junegunn Choi, es un filtro difuso interactivo. Útil por sí solo, alcanza su valor combinado con otras herramientas mediante tuberías: navegación por el historial, selección de rama Git, apertura de ficheros.
# Abrir en $EDITOR un fichero elegido con filtro difuso
vim "$(fzf)"
# Cambiar de rama Git de forma interactiva
git checkout "$(git branch | fzf | tr -d ' *')"
# Combinado con fd y bat como vista previa
fd -t f | fzf --preview 'bat --color=always {}'Leer y comprender
bat — cat con coloreado sintáctico
bat sustituye a cat para la lectura humana: coloreado sintáctico, números de línea, indicadores Git en el margen. Para scripting, cat sigue siendo preferible; para leer un fichero de configuración, la diferencia es clara.
bat wp-config.php
bat -r 40:80 functions.php # solo las líneas 40 a 80eza — un ls contemporáneo
Al no mantenerse ya exa, la comunidad retomó el desarrollo con el nombre eza: iconos, colores por tipo, vista en árbol, columna de estado Git.
eza -la --git --icons
eza --tree --level=2 src/jq — trabajar con JSON
En cuanto entra en juego una API, jq resulta difícil de evitar. El proyecto, ahora mantenido bajo la organización jqlang, ha recuperado un ritmo regular de publicaciones.
# Extraer los títulos de artículos de la API REST de WordPress
curl -s https://ejemplo.com/wp-json/wp/v2/posts | jq '.[].title.rendered'
# Filtrar y reformatear
curl -s https://ejemplo.com/wp-json/wp/v2/posts
| jq '[.[] | {id, slug, titulo: .title.rendered}]'gh — GitHub sin salir del terminal
El cliente oficial de GitHub cubre lo esencial del flujo de trabajo: creación de una solicitud de incorporación, revisión, consulta de las ejecuciones de integración continua, gestión de incidencias. Evita el ir y venir constante entre editor y navegador.
gh pr create --fill
gh pr checks
gh issue list --label bugRecapitulación
| Herramienta | Sustituye a | Aporte decisivo |
|---|---|---|
rg | grep -r | Respeto del .gitignore, velocidad en monorepos |
fd | find | Sintaxis legible para el caso corriente |
fzf | — | Filtro difuso interactivo, componible con tuberías |
bat | cat (lectura) | Coloreado sintáctico e indicadores Git |
eza | ls | Vista en árbol y columna de estado Git |
jq | — | Consulta y reformateo de JSON |
gh | Interfaz web de GitHub | Flujo de revisión sin salir del terminal |
Lo que hay que retener
Ninguna de estas herramientas aporta una capacidad inédita: reducen el coste de uso de operaciones realizadas decenas de veces al día. Es precisamente lo que las hace rentables, y lo que explica su adopción en cadenas de herramientas tan extendidas como la de Visual Studio Code.
Si solo quedara una, sería ripgrep: es el primer binario que instalo en una máquina nueva, antes incluso que mi editor. Las demás mejoran la comodidad; esa cambia mi velocidad de comprensión de una base de código que descubro. — Simon Janvier
