Salta ai contenuti

bat Cheatsheet

bat Cheatsheet

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

Installazione

PiattaformaComando
Ubuntu/Debiansudo apt install bat (binary may be named batcat)
Arch Linuxsudo pacman -S bat
Fedora/RHELsudo 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/Cargocargo install --locked bat
Dockerdocker pull danlynn/bat

Nota: Su Debian/Ubuntu, crea un alias se necessario:alias bat='batcat'

Comandi di Base

ComandoDescrizione
bat file.txtVisualizza file con evidenziazione della sintassi e numeri di riga
bat file1.txt file2.pyVisualizza più file con intestazioni
bat -n file.txtMostra esplicitamente i numeri di riga (abilitato per impostazione predefinita)
bat -p file.txtPlain mode (no decorations, like cat)
bat -pp file.txtModalità extra plain (output completamente plain)
bat -A file.txtMostra tutti i caratteri non stampabili (tabulazioni, spazi, fine riga)
bat -r 10:20 file.txtVisualizza un intervallo specifico di righe (righe 10-20)
bat -r :50 file.txtVisualizza le prime 50 righe
bat -r 100: file.txtVisualizza dalla riga 100 alla fine
`echo “text” \bat`
bat --list-languagesMostra tutti i linguaggi di programmazione supportati
bat --list-themesMostra tutti i temi di colore disponibili
bat -l python file.txtForzare l’evidenziazione specifica del linguaggio/sintassi
bat --plain file.txtDisabilita l’evidenziazione della sintassi
bat --paging=never file.txtDisabilita impaginazione automatica

Utilizzo Avanzato

ComandoDescrizione
bat --theme="Dracula" file.pyUtilizzare un tema colore specifico
bat --diff file.txtMostra modifiche Git con evidenziazione della sintassi
bat --no-git file.txtDisabilita marcatori di integrazione Git
bat --tabs=4 file.pyImposta larghezza personalizzata della scheda
bat --wrap=never file.txtDisabilita a capo riga
bat --terminal-width=80 file.txtImposta larghezza specifica del terminale
bat --style=numbers,changes file.txtMostra solo i numeri di riga e le modifiche di Git
bat --style=header,grid file.txtMostra solo intestazione e separatori della griglia
bat --style=plain file.txtRimuovi tutte le decorazioni
bat --file-name="Custom" file.txtMostra nome personalizzato nell’intestazione
bat --decorations=never file.txtDisabilita tutte le decorazioni (anche quando appropriate)
bat --color=always file.txtForza l’output a colori (anche durante la pipeline)
bat --paging=always file.txtForza pager anche per file piccoli
bat --pager="less -RF" file.txtUtilizzare un pager personalizzato con opzioni
bat --map-syntax='*.conf:INI' file.confAssocia l’estensione del file a una sintassi specifica
bat --generate-config-fileGenera file di configurazione predefinito
bat cache --buildRicostruisci cache della sintassi/tema
bat cache --clearCancella cache sintassi/tema

Configurazione

Posizioni del File di Configurazione

PiattaformaPercorso
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):

ComponenteDescrizione
fullTutti i componenti (predefinito)
autoAutomatico in base all’output
plainNessuna decorazione
numbersNumeri di riga
changesMarcatori di modifica di Git
headerIntestazione nome file
gridSeparatori di griglia
ruleLinee orizzontali
snipMarcatori 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

ProblemaSoluzione
Binary named batcat instead of batCreate alias: alias bat='batcat' or symlink: ln -s /usr/bin/batcat ~/.local/bin/bat
No syntax highlightingCheck language support with bat --list-languages and use -l to force language
Pager interferes with pipesUse bat --paging=never or set export BAT_PAGER=""
Theme not displaying correctlyVerify terminal supports 256 colors; try different theme with bat --theme="GitHub"
Custom theme not appearingEnsure theme file is in $(bat --config-dir)/themes/ and run bat cache --build
Line numbers misalignedCheck tab width setting; adjust with --tabs=4 or in config file
Git integration not workingEnsure file is in Git repository; disable with --no-git if not needed
Config file changes ignoredVerify file location with bat --config-file; check for syntax errors in config
Performance issues with large filesUse --paging=never and pipe to less, or use line ranges with -r
Unicode characters display incorrectlyEnsure terminal uses UTF-8 encoding; check locale settings

Riferimento rapido: Flag comuni

BreveLungoScopo
-p--plainModalità di output semplice
-n--numberMostra numeri di riga
-A--show-allMostra caratteri non stampabili
-l--languageImposta sintassi del linguaggio
-r--line-rangeVisualizza intervallo di righe
-H--highlight-lineEvidenziare righe specifiche
-d--diffMostra Git diff
--themeImposta tema colore
--styleImposta componenti di stile
--pagingControlla il comportamento del pager
--tabsImposta larghezza scheda