32blogby StudioMitsu

Herramientas CLI modernas en Rust: eza, bat, fd, zoxide y más

Reemplaza ls, cat, find y cd con alternativas más rápidas en Rust. Instalación, configuración, alias y combinaciones prácticas.

10 min read
RustCLILinuxezabatfdzoxide
Contenido

La salida sin color de ls. Los flags verbosos de find. La visualización plana de cat. Los comandos UNIX clásicos son sólidos como una roca, pero en 2026, el trabajo interactivo en la terminal merece mejores opciones por defecto.

En los últimos años, las reescrituras en Rust de estas herramientas han ganado una tracción seria. Salida en color, integración con Git, respeto automático de .gitignore — funcionalidades que siempre deberían haber estado ahí ahora vienen integradas desde el principio.

Esta guía se centra en cuatro herramientas de alto impacto — eza, bat, fd y zoxide — cubriendo instalación, uso práctico y configuración de alias.

¿Por qué herramientas CLI basadas en Rust?

Rust se ha convertido en el lenguaje de elección para herramientas CLI, y con buenas razones.

  • Seguridad de memoria: gestión segura de memoria sin recolector de basura. Sin fugas de memoria en procesos de larga duración
  • Abstracciones de coste cero: código de alto nivel que compila a rendimiento de nivel C/C++
  • Distribución en binario único: binarios enlazados estáticamente sin dependencias en tiempo de ejecución — no necesitas Python ni Node.js
  • Multiplataforma: el mismo código fuente compila en Linux, macOS y Windows

Las herramientas CLI en Rust también comparten principios de diseño comunes:

  • Respeto automático de .gitignore (fd, ripgrep, etc.)
  • Salida en color activada por defecto
  • Manejo adecuado de Unicode
  • Mensajes de error claros y útiles

A partir de 2026, Ubuntu está trabajando activamente en reemplazar GNU coreutils con uutils, una implementación en Rust. Las herramientas CLI en Rust están pasando de "alternativa interesante" a "el estándar."

eza: ls evolucionado

eza es un reemplazo moderno para ls. Comenzó como un fork comunitario del ahora abandonado proyecto exa.

Instalación

powershell
winget install eza-community.eza

Uso básico

bash
# Listado detallado con archivos ocultos
eza -la

# Listado detallado con estado de Git
eza -la --git

# Vista de árbol (2 niveles de profundidad)
eza --tree --level=2

# Mostrar iconos de tipo de archivo (requiere una Nerd Font)
eza --icons

# Ordenar por fecha de modificación
eza -la --sort=modified

# Directorios primero
eza --group-directories-first

Comparación ls vs eza

Característicalseza
Salida en color--color=auto para activarActivado por defecto
Estado de GitNo soportadoFlag --git
Vista de árbolRequiere comando tree separadoIntegrado con --tree
IconosNo soportadoFlag --icons
Fila de encabezadoNinguna--header para nombres de columna
HipervínculosNo soportado--hyperlink para enlaces en terminal

bat: cat con alas

bat añade resaltado de sintaxis, números de línea y marcadores de diff de Git a cat. Soporta más de 200 lenguajes de forma nativa.

Instalación

powershell
winget install sharkdp.bat

Uso básico

bash
# Mostrar con resaltado de sintaxis
bat file.py

# Solo números de línea (sin encabezado ni cuadrícula)
bat -n file.py

# Mostrar solo líneas modificadas en Git
bat -d file.py

# Establecer el lenguaje explícitamente
bat -l json data.txt

# Cambiar el tema de colores
bat --theme=TwoDark file.rs

# Listar temas disponibles
bat --list-themes

# Mostrar caracteres invisibles (tabulaciones, saltos de línea, espacios)
bat -A file.txt

Comparación cat vs bat

Característicacatbat
Resaltado de sintaxisNinguno200+ lenguajes
Números de líneacat -nMostrados por defecto
Diff de GitNo soportado-d muestra líneas modificadas
PaginadorNinguno (canalizar a less)Auto-paginación integrada
Caracteres invisiblescat -Abat -A (coloreado)
TemasNinguno20+ temas incluidos

Integración con fzf

bat se combina excepcionalmente bien con fzf como comando de vista previa.

bash
# Vista previa con resaltado de sintaxis al seleccionar archivos
fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'

fd: find simplificado

fd es una alternativa simple a find, construida por el mismo desarrollador que bat (sharkdp). Respeta .gitignore por defecto y usa patrones regex de forma nativa.

Instalación

powershell
winget install sharkdp.fd

Uso básico

bash
# Buscar por regex (recursivo por defecto)
fd "\.mdx$"

# Filtrar por extensión
fd -e js

# Solo directorios
fd -t d

# Búsqueda sensible a mayúsculas
fd -t f -s "README"

# Incluir archivos ocultos
fd -H "\.env"

# Ejecutar un comando en cada coincidencia
fd -e json -x jq '.version'

# Eliminar masivamente archivos coincidentes
fd -e tmp -X rm

Comparación find vs fd

Característicafindfd
Sintaxisfind . -name "*.js"fd -e js
RegexFlag -regex requeridoRegex por defecto
Respeto de .gitignoreNo soportadoActivado por defecto
Archivos ocultosIncluidos por defectoExcluidos por defecto (-H para incluir)
Salida en colorNingunaActivada por defecto
VelocidadUn solo hiloMulti-hilo
Ejecución de comandos-exec-x (cada uno) / -X (lote)

fd comparte su filosofía de diseño con ripgrep. Ambos respetan .gitignore automáticamente y usan coincidencia inteligente de mayúsculas — insensible cuando el patrón está todo en minúsculas, sensible cuando contiene mayúsculas.

zoxide: cd más inteligente

zoxide es un reemplazo "con aprendizaje" para cd. Recuerda qué directorios visitas y te deja saltar a ellos con solo un nombre parcial.

Instalación

powershell
winget install ajeetdsouza.zoxide

Integración con el shell (obligatoria)

zoxide no funciona directamente — necesitas añadir la integración con el shell a tu configuración.

Para bash (~/.bashrc):

bash
eval "$(zoxide init bash)"

Para zsh (~/.zshrc):

bash
eval "$(zoxide init zsh)"

Para fish (~/.config/fish/config.fish):

fish
zoxide init fish | source

Esto habilita los comandos z y zi.

Uso básico

bash
# Saltar a un directorio por coincidencia parcial
z proj
# → salta a ~/projects (si lo has visitado antes)

# Acotar con múltiples palabras clave
z proj content
# → salta a ~/projects/pj-002-content

# Selección interactiva (requiere fzf)
zi

# Volver al directorio anterior
z -

# Listar todos los directorios aprendidos
zoxide query --list

Comparación cd vs zoxide

Característicacdzoxide
Ruta completa requeridaSalto por coincidencia parcial
AprendizajeNingunoRanking por frecuencia y recencia
Selección interactivaNingunazi con integración fzf
Directorio anteriorcd -z -
Autocompletado con TabDesde el sistema de archivosDesde datos aprendidos

Más herramientas que vale la pena probar

Más allá de eza, bat, fd y zoxide, el ecosistema CLI de Rust tiene mucho más que ofrecer.

sd: reemplazo de sed

sd es una alternativa intuitiva a sed. Requiere un escape mínimo de regex comparado con la sintaxis a menudo críptica de sed.

bash
# Reemplazar texto en un archivo
sd 'oldtext' 'newtext' file.txt

# Reemplazo con regex
sd 'v(\d+)' 'version-$1' changelog.md

# Desde stdin (pipe)
echo 'hello world' | sd 'world' 'Rust'

v1.1.0 hizo que el procesamiento línea por línea sea el comportamiento por defecto (cambio incompatible). Ten esto en cuenta al actualizar desde versiones anteriores.

dust: reemplazo de du

dust te da un desglose visual del uso de disco.

bash
# Visualizar uso de disco en el directorio actual
dust

# Mostrar solo las 10 entradas principales
dust -n 10

# Especificar un directorio
dust /var/log

bottom: reemplazo de top

bottom es un monitor de sistema moderno que visualiza CPU, memoria, disco y red en tiempo real.

bash
# Iniciar (comando btm)
btm

v0.12.3 corrigió crashes con cadenas UTF-8 multi-byte, mejorando la estabilidad en entornos con caracteres no ASCII.

delta: reemplazo de git diff

delta añade resaltado de sintaxis a la salida de Git diff.

bash
# Añadir a tu configuración de Git (~/.gitconfig)
git config --global core.pager delta
git config --global interactive.diffFilter 'delta --color-only'

Después de la configuración, git diff, git log -p y git show se canalizan automáticamente a través de delta.

Instalación (las cuatro)

Todas estas herramientas están disponibles a través de brew, cargo y winget.

bash
# Homebrew
brew install sd dust bottom git-delta

# cargo
cargo install sd du-dust bottom git-delta

Instalación masiva y configuración de alias

Así es como configurar todas las herramientas cubiertas en esta guía de una vez.

Homebrew (macOS / Linux)

bash
brew install eza bat fd zoxide fzf ripgrep sd dust bottom git-delta

cargo (toolchain de Rust)

bash
cargo install eza bat fd-find zoxide sd du-dust bottom git-delta

Alias recomendados

Añade lo siguiente a tu ~/.bashrc o ~/.zshrc:

bash
# ---------- Alias de herramientas modernas ----------
alias ls='eza'
alias ll='eza -la --git'
alias lt='eza --tree --level=2'
alias cat='bat --paging=never'
alias find='fd'

# ---------- Usuarios de Ubuntu ----------
# alias bat='batcat'
# alias fd='fdfind'

# ---------- Integración de zoxide ----------
eval "$(zoxide init bash)"  # cambia bash por zsh si es necesario

Conclusión

Aquí tienes un resumen de las herramientas CLI en Rust cubiertas en esta guía:

  • eza: añade color, estado de Git, vista de árbol e iconos a ls. ll='eza -la --git' es el alias imprescindible
  • bat: añade resaltado de sintaxis, números de línea y diff de Git a cat. También funciona genial como comando de vista previa de fzf
  • fd: rediseña find con una sintaxis más simple. Respeta .gitignore automáticamente y ejecuta multi-hilo
  • zoxide: añade aprendizaje a cd. Salta a directorios por coincidencia parcial de nombre

En Ubuntu, ten en cuenta que bat se instala como batcat y fd-find se instala como fdfind. Configura los alias y funcionan igual que en cualquier otro lugar.

Empieza con una sola herramienta — eza o bat causan la mejor primera impresión. Una vez que veas la diferencia, querrás el resto.

Para lectura relacionada, consulta ripgrep como reemplazo de grep, técnicas de integración con fzf, sd en el contexto de sed y la visión general del kit de herramientas CLI.