Saltar a contenido

Hoja de referencia de bat

Un reemplazo moderno para catcon resaltado de sintaxis, integración de Git y paginación automática.

Instalación

Platform Comando
Ubuntu/Debian sudo apt install bat (binary may be named batcat)
Arch Linux sudo pacman -S bat
Fedora/RHEL sudo dnf install bat
macOS (Homebrew) brew install bat
macOS (MacPorts) sudo port install bat
Windows (Scoop) scoop install bat
Windows (Chocolatey) choco install bat
Windows (Winget) winget install sharkdp.bat
Rust/Cargo cargo install --locked bat
Docker docker pull danlynn/bat
Nota: En Debian/Ubuntu, crea un alias si es necesario: alias bat='batcat'

Comandos Básicos

Comando Descripción
bat file.txt Mostrar archivo con resaltado de sintaxis y números de línea
bat file1.txt file2.py Mostrar múltiples archivos con encabezados
bat -n file.txt Mostrar explícitamente los números de línea (habilitado de forma predeterminada)
bat -p file.txt Plain mode (no decorations, like cat)
bat -pp file.txt Modo extra plano (salida completamente plana)
bat -A file.txt Mostrar todos los caracteres no imprimibles (tabulaciones, espacios, saltos de línea)
bat -r 10:20 file.txt Mostrar rango de líneas específico (líneas 10-20)
bat -r :50 file.txt Mostrar primeras 50 líneas
bat -r 100: file.txt Mostrar desde la línea 100 hasta el final
echo "text" \ | bat Mostrar entrada por tubería con resaltado de sintaxis
bat --list-languages Mostrar todos los lenguajes de programación compatibles
bat --list-themes Mostrar todos los temas de color disponibles
bat -l python file.txt Forzar resaltado de sintaxis en un lenguaje específico
bat --plain file.txt Deshabilitar resaltado de sintaxis
bat --paging=never file.txt Deshabilitar paginación automática
## Uso Avanzado
Comando Descripción
bat --theme="Dracula" file.py Usar tema de color específico
bat --diff file.txt Mostrar modificaciones de Git con resaltado de sintaxis
bat --no-git file.txt Deshabilitar marcadores de integración de Git
bat --tabs=4 file.py Establecer ancho de pestaña personalizado
bat --wrap=never file.txt Deshabilitar ajuste de línea
bat --terminal-width=80 file.txt Forzar ancho específico de terminal
bat --style=numbers,changes file.txt Mostrar solo números de línea y cambios de Git
bat --style=header,grid file.txt Mostrar solo separadores de encabezado y cuadrícula
bat --style=plain file.txt Eliminar todas las decoraciones
bat --file-name="Custom" file.txt Mostrar nombre personalizado en el encabezado
bat --decorations=never file.txt Deshabilitar todos los adornos (incluso cuando sean apropiados)
bat --color=always file.txt Forzar salida de color (incluso al hacer pipe)
bat --paging=always file.txt Forzar paginador incluso para archivos pequeños
bat --pager="less -RF" file.txt Usar pager personalizado con opciones
bat --map-syntax='*.conf:INI' file.conf Asignar extensión de archivo a sintaxis específica
bat --generate-config-file Generar archivo de configuración predeterminado
bat cache --build Reconstruir caché de sintaxis/tema
bat cache --clear Limpiar caché de sintaxis/tema
## Configuración

Ubicaciones del Archivo de Configuración

Platform Path
Linux/macOS ~/.config/bat/config
Windows %APPDATA%\bat\config
### Archivo de Configuración de Ejemplo

Crear ~/.config/bat/configcon tus preferencias:

# Set default theme
--theme="Dracula"

# Always show line numbers and changes
--style="numbers,changes,header,grid"

# Use 4-space tabs
--tabs=4

# Automatic paging
--paging=auto

# Show non-printable characters
--show-all

# Enable italic text (if terminal supports)
--italic-text=always

# Custom syntax mappings
--map-syntax="*.conf:INI"
--map-syntax=".ignore:Git Ignore"
--map-syntax="*.jenkinsfile:Groovy"
--map-syntax="*.log:Log"
--map-syntax=".env:Bash"

Variables de Entorno

# Set default theme
export BAT_THEME="Dracula"

# Set default style components
export BAT_STYLE="numbers,changes,header"

# Set default pager
export BAT_PAGER="less -RF"

# Disable paging entirely
export BAT_PAGER=""

# Custom config directory
export BAT_CONFIG_PATH="/custom/path/to/config"

Temas Personalizados

# Create themes directory
mkdir -p "$(bat --config-dir)/themes"

# Download theme file (.tmTheme format)
cd "$(bat --config-dir)/themes"
wget https://example.com/theme.tmTheme

# Rebuild cache to use new theme
bat cache --build

Componentes de Estilo

Componentes de estilo disponibles (separados por comas):

Componente Descripción
full Todos los componentes (default)
auto Automático basado en la salida
plain Sin decoraciones
numbers Números de línea
changes Marcadores de modificación de Git
header Encabezado de nombre de archivo
grid Separadores de cuadrícula
rule Reglas horizontales
snip Marcadores de fragmentos para rangos de líneas
## Casos de Uso Comunes

Caso de Uso: Revisión de Código con Integración de Git

# View file with Git changes highlighted
bat --diff src/main.py

# Compare with previous commit
git show HEAD~1:config.yaml | bat -l yaml --file-name="Previous Version"

# Review multiple changed files
git diff --name-only | xargs bat --diff

Caso de Uso: Análisis de Archivos de Registro

# View application logs with syntax highlighting
bat --language=log /var/log/application.log

# View specific error section
bat -r 1000:2000 /var/log/syslog | grep ERROR

# Monitor live logs (disable paging)
tail -f /var/log/app.log | bat --paging=never -l log

# Search logs with context
bat /var/log/nginx/error.log | grep -C 5 "ERROR"

Caso de Uso: Gestión de Archivos de Configuración

# Review system configurations
bat /etc/nginx/nginx.conf /etc/ssh/sshd_config

# Compare configurations side by side
diff <(bat -p config.prod.yml) <(bat -p config.dev.yml)

# Check for hidden characters in config
bat -A .env

# View Kubernetes resources
kubectl get deployment myapp -o yaml | bat -l yaml

Caso de Uso: Flujos de Trabajo de Docker y Contenedores

# View Dockerfile with syntax highlighting
bat Dockerfile

# Inspect docker-compose configurations
bat docker-compose.yml docker-compose.override.yml

# View container logs with syntax
docker logs container_name 2>&1 | bat --paging=never -l log

# Display formatted JSON from API
curl -s https://api.github.com/repos/sharkdp/bat | bat -l json

Caso de Uso: Desarrollo y Depuración de Scripts

# View shell script with line numbers
bat -n deploy.sh

# Check specific function (lines 45-78)
bat -r 45:78 automation.sh

# Detect problematic characters
bat -A problematic-script.sh

# View multiple related scripts
bat scripts/*.sh

Mejores Prácticas

  • Usar -ppara scripting: Al hacer tuberías o scripting, usa bat -pobat --plainpara evitar decoraciones que puedan interferir con el procesamiento
  • Configurar valores predeterminados: Configurar~/.config/bat/configcon tu tema y estilo preferido para evitar banderas repetitivas
  • Alias para reemplazo de cat: Agregaralias cat='bat --paging=never --style=plain'a tu configuración de shell para un reemplazo sin problemas
  • Aprovechar la integración de Git: Usar--diffal revisar cambios de código para ver modificaciones en línea con resaltado de sintaxis
  • Mapear extensiones personalizadas: Usar--map-syntaxen archivo de configuración para tipos de archivos específicos del proyecto (por ejemplo,.jenkinsfile,.conf)
  • Desactivar paginación para tuberías: Siempre usar--paging=neveral dirigir la salida a otros comandos para evitar problemas con paginador interactivo
  • Usar sugerencias de lenguaje: Para archivos sin extensiones, especificar explícitamente el lenguaje con-lpara un resaltado de sintaxis adecuado
  • Consistencia de tema: Elegir un tema que coincida con el esquema de colores de tu terminal para mejor legibilidad
  • Gestión de caché: Después de agregar temas o sintaxis personalizadas, ejecutarbat cache --buildpara hacerlos disponibles

Resolución de problemas

Problema Solución
Binary named batcat instead of bat Create alias: alias bat='batcat' or symlink: ln -s /usr/bin/batcat ~/.local/bin/bat
No syntax highlighting Check language support with bat --list-languages and use -l to force language
Pager interferes with pipes Use bat --paging=never or set export BAT_PAGER=""
Theme not displaying correctly Verify terminal supports 256 colors; try different theme with bat --theme="GitHub"
Custom theme not appearing Ensure theme file is in $(bat --config-dir)/themes/ and run bat cache --build
Line numbers misaligned Check tab width setting; adjust with --tabs=4 or in config file
Git integration not working Ensure file is in Git repository; disable with --no-git if not needed
Config file changes ignored Verify file location with bat --config-file; check for syntax errors in config
Performance issues with large files Use --paging=never and pipe to less, or use line ranges with -r
Unicode characters display incorrectly Ensure terminal uses UTF-8 encoding; check locale settings
## Referencia rápida: Banderas comunes
Corto Largo Propósito
-p --plain Modo de salida simple
-n --number Mostrar números de línea
-A --show-all Mostrar caracteres no imprimibles
-l --language Establecer sintaxis de lenguaje
-r --line-range Mostrar rango de líneas
-H --highlight-line Resaltar líneas específicas
-d --diff Mostrar diferencia de Git
--theme Establecer tema de color
--style Establecer componentes de estilo
--paging Controlar el comportamiento del pager
--tabs Establecer ancho de pestaña