2  Navegación y Exploración

La navegación eficiente por el sistema de archivos es fundamental para cualquier usuario de terminal. Esta sección cubre las herramientas más poderosas para moverte, explorar y entender la estructura de tus directorios de forma productiva.

2.1 eza - Listado moderno de archivos

eza es un reemplazo moderno del comando ls tradicional, ofreciendo colores, iconos y mejor formato por defecto.

2.1.1 Instalación y configuración

# Ya está instalado con Homebrew
which eza

2.1.2 Uso básico

# Listado básico con iconos y colores
eza
Tip

eza muestra colores e iconos por defecto, making it much more readable than traditional ls.

2.1.3 Ejemplos prácticos

2.1.3.1 Listado detallado

# Equivalente a 'ls -la' pero mucho más visual
eza -la

# Con fechas en formato legible
eza -la --time-style=long-iso

# Mostrar tamaños en formato legible (KB, MB, GB)
eza -lah

2.1.3.2 Vista en árbol

# Vista de árbol del directorio actual
eza --tree

# Limitar profundidad a 2 niveles
eza --tree --level=2

# Árbol con información detallada
eza --tree -la

# Ignorar directorios específicos
eza --tree --ignore-glob="node_modules|.git"

2.1.3.3 Filtrado y ordenamiento

# Mostrar solo directorios
eza -D

# Mostrar solo archivos
eza -f

# Ordenar por tamaño (mayor a menor)
eza -la --sort=size --reverse

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

# Ordenar por extensión
eza -la --sort=extension

2.1.3.4 Información de Git

# Mostrar estado de Git para cada archivo
eza -la --git

# Solo archivos con cambios en Git
eza -la --git | grep -E '\s[MAD?]\s'

2.1.4 Casos de uso avanzados

2.1.4.1 Análisis de proyectos

# Ver estructura completa de un proyecto con Git info
eza --tree --git --ignore-glob="node_modules|.git|dist|build"

# Ver archivos grandes en el proyecto
eza -la --sort=size --reverse | head -20

2.1.4.2 Alias útiles

Agrega estos a tu .zshrc o .bashrc:

alias ll='eza -la --git'
alias lt='eza --tree'
alias llt='eza --tree -la'
alias ls='eza'

2.2 tree - Estructura visual de directorios

tree genera una representación visual en forma de árbol de la estructura de directorios.

2.2.1 Uso básico

# Árbol básico del directorio actual
tree

# Limitar a 2 niveles de profundidad
tree -L 2

# Mostrar archivos ocultos
tree -a

2.2.2 Ejemplos prácticos

2.2.2.1 Control de profundidad y filtros

# Solo directorios (sin archivos)
tree -d

# Límite de 3 niveles, solo directorios
tree -d -L 3

# Ignorar patrones específicos
tree -I 'node_modules|.git|*.pyc'

# Múltiples patrones de exclusión
tree -I 'node_modules|.git|dist|build|coverage'

2.2.2.2 Información adicional

# Mostrar tamaños de archivos
tree -s

# Mostrar fechas de modificación
tree -D

# Mostrar permisos
tree -p

# Combinación: tamaños, fechas y permisos
tree -sDp

2.2.2.3 Salida formateada

# Solo los nombres de archivos (sin estructura de árbol)
tree -i

# Mostrar rutas completas
tree -f

# Colorear salida según tipo de archivo
tree -C

2.2.3 Casos de uso avanzados

2.2.3.1 Documentación de proyectos

# Generar documentación HTML del proyecto
tree -H . -o project-structure.html

# Con título personalizado
tree -H . -T "Mi Proyecto" -o structure.html

# Incluir CSS personalizado
tree -H . -C -o structure.html

2.2.3.2 Análisis de directorios

# Contar archivos por tipo
tree | grep -E '\.(js|py|md)$' | wc -l

# Ver directorios más profundos
tree -d | tail -20

# Encontrar directorios vacíos
tree -d --prune

2.2.3.3 Scripts de backup

# Crear lista de archivos para backup
tree -if > backup-list.txt

# Solo archivos modificados en últimos 7 días
find . -mtime -7 | tree --fromfile

2.3 ranger - Navegador interactivo

ranger es un navegador de archivos en terminal con interfaz visual y vista previa.

2.3.1 Iniciando ranger

# Abrir ranger en directorio actual
ranger

# Abrir en directorio específico
ranger ~/Documents

# Abrir y ejecutar comando al salir
ranger --cmd="cd /tmp"

2.3.3 Comandos esenciales

2.3.3.1 Gestión de archivos

# Dentro de ranger:
yy    # Copiar archivo/directorio
dd    # Cortar archivo/directorio
pp    # Pegar
dD    # Eliminar permanentemente
:delete # Eliminar con confirmación

2.3.3.2 Búsqueda y filtros

# Buscar archivos
/nombre_archivo

# Búsqueda hacia atrás
?nombre

# Filtrar archivos mostrados
zf

# Mostrar archivos ocultos
zh

# Mostrar solo directorios
zd

2.3.3.3 Vista previa y configuración

# Alternar vista previa
zv

# Cambiar modo de vista
zP

# Información del archivo
=

2.3.4 Personalización

2.3.4.1 Archivo de configuración

Crea ~/.config/ranger/rc.conf:

# Mostrar archivos ocultos por defecto
set show_hidden true

# Vista previa activada
set preview_files true

# Usar colores
set colorscheme default

# Integración con git
set vcs_aware true

2.3.4.2 Comandos personalizados

# En rc.conf, agregar comandos personalizados:
map <C-t> shell tmux new-window
map <C-e> shell code %s
map <C-g> shell git status

2.3.5 Casos de uso avanzados

2.3.5.1 Integración con otros programas

# Abrir archivo con aplicación específica
r    # Menú de aplicaciones
1    # Aplicación por defecto
2    # Editor de texto
3    # Visor de imágenes

2.3.5.2 Marcadores y tabs

# Crear marcador
m + letra

# Ir a marcador
' + letra  (comilla simple)

# Nuevo tab
Ctrl+n

# Cambiar tab
Tab / Shift+Tab

# Cerrar tab
Ctrl+w

2.4 zoxide - Navegación inteligente

zoxide es un reemplazo inteligente para cd que recuerda los directorios que visitas frecuentemente.

2.4.1 Configuración inicial

# Agregar a tu .zshrc
eval "$(zoxide init zsh)"

# Para bash
eval "$(zoxide init bash)"

# Reiniciar shell o ejecutar
source ~/.zshrc

2.4.2 Uso básico

# Después de la configuración, 'z' reemplaza a 'cd'
z Documents
z proj    # Si has visitado ~/Projects antes
z down    # Para ~/Downloads

2.4.3 Ejemplos prácticos

2.4.3.2 Gestión de la base de datos

# Ver directorios rastreados con puntuaciones
zoxide query --list

# Ver estadísticas detalladas
zoxide query --stats

# Agregar directorio manualmente
zoxide add /ruta/especial

# Eliminar directorio de la base de datos
zoxide remove /ruta/vieja

2.4.4 Casos de uso avanzados

2.4.4.1 Integración con scripts

#!/bin/bash
# Script para navegar a proyecto y activar entorno

PROJECT=$(zoxide query "$1")
if [ -n "$PROJECT" ]; then
    cd "$PROJECT"
    if [ -f ".venv/bin/activate" ]; then
        source .venv/bin/activate
    fi
fi

2.4.4.2 Aliases personalizados

# En .zshrc
alias zz='zi'  # Navegación interactiva
alias zl='zoxide query --list'  # Listar directorios
alias zs='zoxide query --stats'  # Estadísticas

2.5 Combinaciones poderosas

2.5.1 Exploración completa de proyectos

# 1. Navegar al proyecto
z myproject

# 2. Ver estructura general
eza --tree --level=3 --ignore-glob="node_modules|.git"

# 3. Ver archivos modificados recientemente
eza -la --sort=modified | head -10

# 4. Abrir navegador interactivo para explorar
ranger

2.5.2 Análisis rápido de directorios

# Pipeline para analizar un directorio desconocido
z unknown-dir && \
tree -L 2 && \
echo "--- Archivos más grandes ---" && \
eza -la --sort=size --reverse | head -5 && \
echo "--- Tipos de archivo ---" && \
find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -nr