Una docena de utilidades libres pueden cambiar la forma de trabajar en la terminal de Linux sin tocar la distribución, la shell ni el equipo: fzf, zoxide, fd, ripgrep, bat, eza, btop, dust, duf, tmux, tldr y jq sustituyen o complementan a comandos clásicos como find, grep, cat, ls, top, du o df con búsquedas más rápidas, salida más legible y menos opciones que memorizar. Ninguna reemplaza el conocimiento de las herramientas tradicionales, que siguen siendo las que estarán en cualquier servidor, pero en el día a día ahorran mucho tiempo.
Las claves de las herramientas modernas de terminal en 30 segundos
- fzf, zoxide y fd aceleran la búsqueda de archivos, directorios y comandos.
- ripgrep, bat y eza mejoran grep, cat y ls con colores, números de línea y estado de Git.
- btop, dust y duf muestran CPU, memoria y disco de forma visual.
- tmux mantiene sesiones vivas; tldr y jq simplifican la ayuda y el JSON.
- Todas están en los repositorios de las principales distribuciones, con algunos nombres distintos en Debian y Ubuntu.
Instalación en cada distribución
En Debian, Ubuntu, Kali y derivadas, todo se instala de una vez con apt:
sudo apt update
sudo apt install -y fzf zoxide fd-find ripgrep bat eza btop duf tmux tealdeer jq
# dust: paquete du-dust en las versiones que lo incluyen
sudo apt install -y du-dustLenguaje del código: PHP (php)
En Fedora y en Arch Linux los nombres coinciden casi siempre con los de los programas, y en macOS se pueden instalar con Homebrew:
# Fedora
sudo dnf install fzf zoxide fd-find ripgrep bat eza btop du-dust duf tmux tealdeer jq
# Arch Linux
sudo pacman -S fzf zoxide fd ripgrep bat eza btop dust duf tmux tealdeer jq
# macOS con Homebrew
brew install fzf zoxide fd ripgrep bat eza btop dust duf tmux tealdeer jqLenguaje del código: PHP (php)
Si algún paquete no aparece en una versión antigua de la distribución, no pasa nada: son herramientas independientes y el resto funcionará igual. Muchas también ofrecen binarios en sus páginas de GitHub.
Hay un detalle importante en Debian y Ubuntu. Para evitar choques con paquetes antiguos que ya usaban esos nombres, fd se instala como fdfind y bat como batcat. Se resuelve con dos alias en el fichero de configuración de la shell (~/.bashrc o ~/.zshrc):
alias fd='fdfind'
alias bat='batcat'Lenguaje del código: JavaScript (javascript)
Para probar los ejemplos sin tocar proyectos reales, conviene crear un directorio de pruebas con algunos ficheros falsos:
mkdir -p ~/termlab/{src,config,logs} && cd ~/termlab
printf 'import osn# TODO: quitar la clavenAPI_KEY = "demo_123"n' > src/app.py
printf 'port=8080ndebug=truen' > config/app.conf
printf 'API_KEY=demo_123n' > .env
for i in $(seq 1 30); do echo "line $i ok" >> logs/server.log; done
echo "line 31 ERROR disk full" >> logs/server.logLenguaje del código: PHP (php)
Moverse y buscar: fzf, zoxide, fd y ripgrep
fzf añade un buscador difuso a cualquier lista que se le pase por la entrada estándar. Basta escribir unas letras para que filtre en tiempo real y pulsar Intro para elegir. Su gran ventaja llega al activar la integración con la shell: Ctrl+R busca en el historial de comandos y Ctrl+T inserta la ruta de un archivo en la línea actual.
fd --type f | fzf
# Integración con la shell (fzf 0.48 o posterior)
eval "$(fzf --bash)" # en ~/.bashrc
source <(fzf --zsh) # en ~/.zshrcLenguaje del código: PHP (php)
Si la shell devuelve un error con --zsh o --bash, la versión instalada es anterior a la 0.48. En ese caso se pueden cargar los atajos desde los ejemplos que incluye el paquete, normalmente en /usr/share/doc/fzf/examples/, o instalar una versión más reciente desde el repositorio del proyecto.
zoxide es un cd que aprende. Registra los directorios que se visitan y los ordena por frecuencia y antigüedad, de modo que z conf salta a ~/termlab/config sin escribir la ruta completa. Con zi abre un selector interactivo apoyado en fzf.
eval "$(zoxide init bash)" # o: eval "$(zoxide init zsh)"
z conf
ziLenguaje del código: PHP (php)
fd es una alternativa a find con una sintaxis mucho más corta. Por defecto ignora los archivos ocultos y los que excluye .gitignore, así que los resultados salen limpios. Las opciones -H e -I desactivan esos filtros, útiles por ejemplo para localizar ficheros .env olvidados.
fd conf # nombres que contienen "conf"
fd -e py # archivos con extensión .py
fd -H -I env # incluye ocultos e ignoradosLenguaje del código: PHP (php)
ripgrep (rg) busca texto de forma recursiva, con colores y números de línea, respetando también .gitignore. Es el motor de búsqueda que usa Visual Studio Code. Para revisar un repositorio en busca de credenciales escritas en el código es especialmente práctico:
rg TODO
rg -i "password|api_key|secret"
rg -c ok logs/Lenguaje del código: JavaScript (javascript)
Leer y listar: bat y eza
bat es un cat con resaltado de sintaxis, números de línea y marcas de Git en los fragmentos modificados. Con -p muestra la salida sin decoración, para copiarla, y combinado con fzf sirve de vista previa de archivos:
bat src/app.py
bat -p src/app.py
fzf --preview 'bat --color=always {}'Lenguaje del código: JavaScript (javascript)
eza sustituye a ls con colores por tipo de archivo, tamaños legibles, una columna de estado de Git y vista en árbol. Es la continuación comunitaria de exa, que dejó de mantenerse. Si los iconos aparecen como recuadros, la fuente de la terminal no los incluye: se puede quitar --icons o instalar una Nerd Font.
eza -la --git
eza --tree --level=2
eza -la --icons
Vigilar el sistema: btop, dust y duf
btop muestra en tiempo real CPU, memoria, discos, red y procesos con gráficas, y permite filtrar, ordenar y enviar señales a los procesos. Es la tercera generación de una idea del mismo autor, que empezó como bashtop en Bash, pasó a bpytop en Python y se reescribió en C++ por rendimiento. Se sale con q.

dust, cuyo nombre combina du y Rust, el lenguaje en que está escrito, enseña qué directorios ocupan más espacio, ordenados de mayor a menor y con barras proporcionales. Es lo que muchos hacen con du -sh y sort, pero en un solo comando. duf, por su parte, es un df legible: agrupa los discos por tipo en una tabla con barras de ocupación que cambian de color al llenarse.
dust -d 1 ~
duf

Sesiones, ayuda y JSON: tmux, tldr y jq
tmux mantiene abiertas las sesiones de terminal aunque se cierre la ventana o caiga la conexión SSH, lo que lo hace imprescindible para tareas largas en servidores remotos. Dentro de una sesión, Ctrl+b seguido de % divide la pantalla en vertical, Ctrl+b y " en horizontal, y Ctrl+b y d la deja en segundo plano. Quien busque algo más simple puede mirar atch, una alternativa ligera a tmux.
tmux new -s trabajo
tmux ls
tmux attach -t trabajoLenguaje del código: JavaScript (javascript)
tldr ofrece páginas de ayuda resumidas con los usos más habituales de cada comando, escritas por la comunidad. En Debian y Ubuntu lo proporciona el cliente tealdeer, que necesita descargar la base de páginas la primera vez. No sustituye a man, pero suele bastar para recordar la sintaxis de tar o rsync.
tldr --update
tldr tar
jq formatea, filtra y transforma JSON desde la línea de comandos. Como casi todas las API, herramientas cloud y escáneres de seguridad devuelven JSON, es de las utilidades que más rendimiento dan. Este ejemplo extrae tres campos de la API pública de GitHub:
curl -s https://api.github.com/repos/junegunn/fzf | jq '{name, stars: .stargazers_count, language}'Lenguaje del código: JavaScript (javascript)
Para quien quiera ir más allá de los comandos sueltos, en este medio repasamos también las mejores aplicaciones TUI para trabajar desde la terminal.
Preguntas frecuentes
¿Por qué fd y bat se llaman fdfind y batcat en Ubuntu?
Porque en Debian y sus derivadas ya existían paquetes antiguos con esos nombres. Se soluciona con los alias fd=’fdfind’ y bat=’batcat’ en la configuración de la shell.
¿Sustituyen estas herramientas a find, grep o ls?
En el uso diario sí pueden hacerlo, pero los comandos clásicos siguen siendo los que habrá en cualquier servidor, así que conviene seguir conociéndolos, sobre todo para scripts.
¿Funcionan en macOS?
Sí. Todas pueden instalarse con Homebrew y la configuración de fzf y zoxide es la misma en bash y zsh.
Fuentes:







