Vai al contenuto

bat Cheatsheet

catUn sostituto moderno di cat con evidenziazione della sintassi, integrazione Git e impaginazione automatica.

Installazione

Piattaforma 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: Su Debian/Ubuntu, crea un alias se necessario:alias bat='batcat'

Comandi di Base

Comando Descrizione
bat file.txt Visualizza file con evidenziazione della sintassi e numeri di riga
bat file1.txt file2.py Visualizza più file con intestazioni
bat -n file.txt Mostra esplicitamente i numeri di riga (abilitato per impostazione predefinita)
bat -p file.txt Plain mode (no decorations, like cat)
bat -pp file.txt Modalità extra plain (output completamente plain)
bat -A file.txt Mostra tutti i caratteri non stampabili (tabulazioni, spazi, fine riga)
bat -r 10:20 file.txt Visualizza un intervallo specifico di righe (righe 10-20)
bat -r :50 file.txt Visualizza le prime 50 righe
bat -r 100: file.txt Visualizza dalla riga 100 alla fine
echo "text" \ | bat Visualizza l'input tramite pipe con evidenziazione della sintassi
bat --list-languages Mostra tutti i linguaggi di programmazione supportati
bat --list-themes Mostra tutti i temi di colore disponibili
bat -l python file.txt Forzare l'evidenziazione specifica del linguaggio/sintassi
bat --plain file.txt Disabilita l'evidenziazione della sintassi
bat --paging=never file.txt Disabilita impaginazione automatica
## Utilizzo Avanzato
Comando Descrizione
bat --theme="Dracula" file.py Utilizzare un tema colore specifico
bat --diff file.txt Mostra modifiche Git con evidenziazione della sintassi
bat --no-git file.txt Disabilita marcatori di integrazione Git
bat --tabs=4 file.py Imposta larghezza personalizzata della scheda
bat --wrap=never file.txt Disabilita a capo riga
bat --terminal-width=80 file.txt Imposta larghezza specifica del terminale
bat --style=numbers,changes file.txt Mostra solo i numeri di riga e le modifiche di Git
bat --style=header,grid file.txt Mostra solo intestazione e separatori della griglia
bat --style=plain file.txt Rimuovi tutte le decorazioni
bat --file-name="Custom" file.txt Mostra nome personalizzato nell'intestazione
bat --decorations=never file.txt Disabilita tutte le decorazioni (anche quando appropriate)
bat --color=always file.txt Forza l'output a colori (anche durante la pipeline)
bat --paging=always file.txt Forza pager anche per file piccoli
bat --pager="less -RF" file.txt Utilizzare un pager personalizzato con opzioni
bat --map-syntax='*.conf:INI' file.conf Associa l'estensione del file a una sintassi specifica
bat --generate-config-file Genera file di configurazione predefinito
bat cache --build Ricostruisci cache della sintassi/tema
bat cache --clear Cancella cache sintassi/tema
## Configurazione

Posizioni del File di Configurazione

Piattaforma Percorso
Linux/macOS ~/.config/bat/config
Windows %APPDATA%\bat\config
### File di Configurazione di Esempio

Crea ~/.config/bat/configcon le tue preferenze:

# 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"

Variabili di Ambiente

# 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"

Temi Personalizzati

# 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

Componenti di Stile

Componenti di stile disponibili (separati da virgola):

Componente Descrizione
full Tutti i componenti (predefinito)
auto Automatico in base all'output
plain Nessuna decorazione
numbers Numeri di riga
changes Marcatori di modifica di Git
header Intestazione nome file
grid Separatori di griglia
rule Linee orizzontali
snip Marcatori di selezione per intervalli di righe
## Casi d'Uso Comuni

Caso d'Uso: Revisione del Codice con Integrazione 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 d'Uso: Analisi di File di Log

# 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 d'Uso: Gestione di File di Configurazione

# 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 d'Uso: Workflow Docker e Container

# 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 d'Uso: Sviluppo e Debug di Script

# 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

Migliori Pratiche

  • Usa -pper lo scripting: Quando usi pipe o script, usa bat -pobat --plainper evitare decorazioni che potrebbero interferire con l'elaborazione
  • Configura impostazioni predefinite: Imposta~/.config/bat/configcon il tuo tema e stile preferito per evitare flag ripetitivi
  • Alias per sostituzione cat: Aggiungialias cat='bat --paging=never --style=plain'al tuo file di configurazione della shell per una sostituzione senza interruzioni
  • Sfrutta l'integrazione Git: Usa--diffdurante la revisione delle modifiche al codice per vedere le modifiche inline con l'evidenziazione della sintassi
  • Mappa estensioni personalizzate: Usa--map-syntaxnel file di configurazione per tipi di file specifici del progetto (ad esempio,.jenkinsfile,.conf)
  • Disabilita paginazione per pipe: Usa sempre--paging=neverquando si invia l'output ad altri comandi per evitare problemi con il pager interattivo
  • Usa suggerimenti di lingua: Per file senza estensioni, specifica esplicitamente la lingua con-lper una corretta evidenziazione della sintassi
  • Coerenza del tema: Scegli un tema che corrisponda allo schema di colori del tuo terminale per una migliore leggibilità
  • Gestione cache: Dopo aver aggiunto temi o sintassi personalizzate, eseguibat cache --buildper renderli disponibili

Risoluzione dei problemi

Problema Soluzione
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
## Riferimento rapido: Flag comuni
Breve Lungo Scopo
-p --plain Modalità di output semplice
-n --number Mostra numeri di riga
-A --show-all Mostra caratteri non stampabili
-l --language Imposta sintassi del linguaggio
-r --line-range Visualizza intervallo di righe
-H --highlight-line Evidenziare righe specifiche
-d --diff Mostra Git diff
--theme Imposta tema colore
--style Imposta componenti di stile
--paging Controlla il comportamento del pager
--tabs Imposta larghezza scheda