Aller au contenu

bat Cheatsheet

bat Cheatsheet

catUn remplacement moderne de cat avec coloration syntaxique, intégration Git et pagination automatique.

Installation

PlateformeCommande
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
Remarque : Sur Debian/Ubuntu, créez un alias si nécessaire : alias bat='batcat'

Commandes de base

CommandeDescription
bat file.txtAfficher le fichier avec coloration syntaxique et numéros de ligne
bat file1.txt file2.pyAfficher plusieurs fichiers avec des en-têtes
bat -n file.txtAfficher explicitement les numéros de ligne (activé par défaut)
bat -p file.txtPlain mode (no decorations, like cat)
bat -pp file.txtMode plain supplémentaire (sortie complètement plain)
bat -A file.txtAfficher tous les caractères non imprimables (tabulations, espaces, fins de ligne)
bat -r 10:20 file.txtAfficher la plage de lignes spécifique (lignes 10-20)
bat -r :50 file.txtAfficher les 50 premières lignes
bat -r 100: file.txtAfficher de la ligne 100 à la fin
`echo “text” \bat`
bat --list-languagesAfficher tous les langages de programmation pris en charge
bat --list-themesAfficher tous les thèmes de couleur disponibles
bat -l python file.txtForcer la mise en surbrillance de langage/syntaxe spécifique
bat --plain file.txtDésactiver la coloration syntaxique
bat --paging=never file.txtDésactiver la pagination automatique

Utilisation avancée

CommandeDescription
bat --theme="Dracula" file.pyUtiliser un thème de couleur spécifique
bat --diff file.txtAfficher les modifications Git avec la coloration syntaxique
bat --no-git file.txtDésactiver les marqueurs d’intégration Git
bat --tabs=4 file.pyDéfinir la largeur personnalisée des onglets
bat --wrap=never file.txtDésactiver le retour à la ligne
bat --terminal-width=80 file.txtForcer une largeur de terminal spécifique
bat --style=numbers,changes file.txtAfficher uniquement les numéros de ligne et les modifications Git
bat --style=header,grid file.txtAfficher uniquement les séparateurs d’en-tête et de grille
bat --style=plain file.txtSupprimer toutes les décorations
bat --file-name="Custom" file.txtAfficher le nom personnalisé dans l’en-tête
bat --decorations=never file.txtDésactiver toutes les décorations (même lorsqu’elles sont appropriées)
bat --color=always file.txtForcer la sortie en couleur (même lors du transfert de données)
bat --paging=always file.txtForcer le pager même pour les petits fichiers
bat --pager="less -RF" file.txtUtiliser un pager personnalisé avec des options
bat --map-syntax='*.conf:INI' file.confMapper l’extension de fichier à une syntaxe spécifique
bat --generate-config-fileGénérer le fichier de configuration par défaut
bat cache --buildReconstruire le cache de syntaxe/thème
bat cache --clearEffacer le cache de syntaxe/thème

Configuration

Emplacements des fichiers de configuration

PlateformeChemin
Linux/macOS~/.config/bat/config
Windows%APPDATA%\bat\config

Exemple de fichier de configuration

Créez ~/.config/bat/configavec vos préférences :

# 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 d’environnement

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

Thèmes personnalisés

# 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

Composants de style

Composants de style disponibles (séparés par des virgules) :

ComposantDescription
fullTous les composants (default)
autoAutomatique en fonction de la sortie
plainAucune décoration
numbersNuméros de ligne
changesMarqueurs de modification Git
headerEn-tête du nom de fichier
gridSéparateurs de grille
ruleRègles horizontales
snipMarqueurs de sélection pour plages de lignes

Cas d’utilisation courants

Cas d’utilisation : Revue de code avec intégration 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

Cas d’utilisation : Analyse de fichiers journaux

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

Cas d’utilisation : Gestion des fichiers de configuration

# 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

Cas d’utilisation : Workflows Docker et conteneurs

# 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

Cas d’utilisation : Développement et débogage 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

Meilleures pratiques

  • Utilisez -ppour les scripts : Lors du pipe ou du scripting, utilisez bat -poubat --plainpour éviter les décorations qui pourraient interférer avec le traitement~/.config/bat/configavec votre thème et style préférés pour éviter les drapeaux répétitifsalias cat='bat --paging=never --style=plain'dans votre configuration de shell pour un remplacement transparent--difflors de la revue des modifications de code pour voir les modifications en ligne avec la coloration syntaxique--map-syntaxdans le fichier de configuration pour les types de fichiers spécifiques au projet (par exemple,.jenkinsfile``.conf)--paging=neverlors du transfert de la sortie vers d’autres commandes pour éviter les problèmes de pagineur interactif-lpour les fichiers sans extensions, spécifiez explicitement le langage avecbat cache --buildpour les rendre disponibles

Dépannage

ProblèmeSolution
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

Référence rapide : Drapeaux courants

CourtLongObjectif
-p--plainMode de sortie standard
-n--numberAfficher les numéros de ligne
-A--show-allAfficher les caractères non imprimables
-l--languageDéfinir la syntaxe du langage
-r--line-rangeAfficher la plage de lignes
-H--highlight-lineMettre en évidence des lignes spécifiques
-d--diffAfficher le diff Git
--themeDéfinir le thème de couleur
--styleDéfinir les composants de style
--pagingContrôler le comportement du pager
--tabsDéfinir la largeur de tabulation

Note: Some placeholders (lines 6, 7, 11) were left empty as no specific text was provided in the original input. Would you like me to clarify or complete those lines?