bat - Modernes cat mit Syntax Highlighting
Tool-Lektion | 25 Minuten
Das klassische Unix-Tool cat zeigt Dateiinhalte im Terminal an - aber ohne jegliche Formatierung:
Lernziele
- Verstehen warum dieses Tool wichtig ist
- Die wichtigsten Einsatzgebiete kennen
- Installation und grundlegende Nutzung beherrschen
- Production-ready Patterns anwenden
- Real-World Use Cases umsetzen
bat - Modernes cat mit Syntax Highlighting
🚀 Claude Code Relevanz: bat ist unverzichtbar fuer Claude Code Workflows, weil du damit Code-Aenderungen sofort syntax-highlighted reviewen und Git-Diffs direkt im Terminal pruefen kannst, ohne die IDE zu oeffnen.
Berechtigung - Warum bat?
Das Problem mit `cat`
Das klassische Unix-Tool cat zeigt Dateiinhalte im Terminal an - aber ohne jegliche Formatierung:
- ❌ Kein Syntax Highlighting
- ❌ Keine Zeilennummern
- ❌ Keine Git-Integration
- ❌ Schwer lesbar bei großen Dateien
- ❌ Keine Paginierung
Die Lösung: bat
bat ist ein modernes Replacement für cat mit Features, die du jeden Tag nutzen wirst:
- ✅ Automatisches Syntax Highlighting für 100+ Sprachen
- ✅ Git-Integration zeigt Änderungen inline
- ✅ Zeilennummern standardmäßig
- ✅ Paginierung bei langen Dateien
- ✅ Non-printable Characters sichtbar machen
- ✅ Themes (anpassbar)
Ergebnis: Du liest Code 10x schneller und verstehst Dateien auf einen Blick.
💡 Tipp: Setze bat als Standard-Alias fuer cat in deiner Shell-Konfiguration - so profitierst du automatisch bei jedem Datei-Aufruf von Syntax Highlighting.
Zwecke - Wofür du bat einsetzt
In diesem Abschnitt siehst du die fuenf wichtigsten Einsatzgebiete von bat im Alltag - von Code-Review bis Markdown-Preview.
. **Code-Review im Terminal**
Im Entwicklungsalltag musst du haeufig schnell in eine Datei schauen, um den aktuellen Stand zu pruefen - zum Beispiel bevor du Aenderungen vornimmst oder nach einem Git Pull. Statt dafuer jedes Mal die IDE zu oeffnen und zu warten bis sie geladen hat, zeigt dir bat den Dateiinhalt sofort syntax-highlighted im Terminal an. Stell dir vor, du arbeitest an einem React-Projekt und willst kurz pruefen, welche Props die UserProfile-Komponente erwartet. Mit bat siehst du den Code farbig hervorgehoben mit Zeilennummern, was das Lesen und Verstehen deutlich beschleunigt. Das Ergebnis ist ein sofort lesbarer, farbig formatierter Output direkt im Terminal. Besonders in Code-Review-Situationen sparst du damit viel Zeit, weil du nicht zwischen Terminal und IDE hin- und herwechseln musst.
bat src/components/UserProfile.jsx
# → Syntax-highlighted, nummeriert, lesbar
. **Config-Dateien checken**
Konfigurationsdateien wie package.json, docker-compose.yml oder .env-Dateien enthalten oft verschachtelte Strukturen, die ohne Syntax Highlighting schwer zu lesen sind. Mit bat werden Keys, Values, Strings und Zahlen in unterschiedlichen Farben dargestellt, sodass du Fehler wie fehlende Anfuehrungszeichen oder falsche Einrueckung sofort erkennst. Stell dir vor, du debuggst ein Docker-Problem und musst schnell pruefen, ob die Ports in deiner docker-compose.yml korrekt konfiguriert sind. Ohne Highlighting ist das bei 100+ Zeilen YAML muehsam - mit bat springt die relevante Stelle sofort ins Auge. Das Ergebnis ist ein farbig formatierter Config-Output, der strukturelle Fehler sichtbar macht. Beachte dass bat die Sprache automatisch anhand der Dateiendung erkennt.
bat package.json
bat docker-compose.yml
bat .env.example
. **Log-Dateien analysieren**
Log-Dateien sind oft hunderte oder tausende Zeilen lang, und ohne Formatierung wird das Finden von Fehlern zur Suche nach der Nadel im Heuhaufen. bat hebt Timestamps, Error-Level und Stack Traces farbig hervor, sodass kritische Fehler sofort sichtbar werden. Stell dir vor, deine Node.js-Anwendung crasht in Production und du musst die letzten Error-Logs durchsuchen - mit bat siehst du ERROR-Eintraege in rot und kannst sie blitzschnell identifizieren. Das spart dir wertvolle Minuten beim Debugging, weil du nicht jede Zeile einzeln lesen musst. Das Ergebnis ist ein farbig strukturierter Log-Output, in dem Fehler sofort ins Auge springen.
bat logs/error.log
. **Diffs anzeigen**
Wenn du wissen willst, welche Zeilen einer Datei seit dem letzten Commit geaendert wurden, musst du normalerweise git diff ausfuehren. Mit bat's --diff Flag siehst du die Aenderungen direkt neben dem vollstaendigen, syntax-highlighted Code - hinzugefuegte Zeilen werden gruen markiert, geloeschte rot. Stell dir vor, du hast an einer JavaScript-Datei gearbeitet und willst vor dem Commit nochmal pruefen, welche Funktionen du geaendert hast. Mit bat siehst du den gesamten Code im Kontext, nicht nur isolierte Diff-Chunks. Das Ergebnis sind farbige Marker am linken Rand, die dir sofort zeigen wo Aenderungen stattgefunden haben. Dieser Befehl ist besonders nuetzlich in Kombination mit Claude Code, um nach automatisierten Aenderungen den Ueberblick zu behalten.
bat --diff main.js
# Zeigt Änderungen vs. letztem Git-Commit
. **Markdown-Preview**
README-Dateien und andere Markdown-Dokumente enthalten Ueberschriften, Code-Blocks und Links, die mit cat als unleserlicher Rohtext angezeigt werden. bat erkennt Markdown automatisch und hebt die verschiedenen Elemente farbig hervor - Ueberschriften in blau, Code-Blocks in grau, Links in cyan. Stell dir vor, du klonst ein neues Open-Source-Projekt und willst schnell die README lesen, um zu verstehen wie du es installierst und startest. Mit bat bekommst du eine gut lesbare, farbig formatierte Vorschau direkt im Terminal. Das Ergebnis ist eine strukturierte Darstellung, die zwar kein vollstaendiges Markdown-Rendering bietet (dafuer nutze glow), aber fuer schnelles Scannen voellig ausreicht.
bat README.md
Verwendung - Wie du bat einsetzt
Hier findest du alles von der Installation ueber die Grundlagen bis hin zu fortgeschrittenen Anwendungen, damit du bat sofort produktiv nutzen kannst.
Installation
Die Installation ist auf allen gaengigen Betriebssystemen einfach ueber den jeweiligen Paketmanager moeglich.
macOS (Homebrew):
Die einfachste Installation auf macOS ist ueber Homebrew. Homebrew laedt das vorkompilierte Binary herunter und richtet den Pfad automatisch ein, sodass du bat sofort nach der Installation nutzen kannst. Dieser Vorgang dauert in der Regel weniger als 30 Sekunden. Falls du Homebrew noch nicht installiert hast, findest du die Anleitung auf brew.sh. Nach der Installation kannst du mit bat --version pruefen, ob alles korrekt eingerichtet ist.
brew install bat
Ubuntu/Debian:
Auf Debian-basierten Systemen ist bat in den Standard-Repositories verfuegbar und laesst sich ueber apt installieren. Beachte allerdings den wichtigen Unterschied: Auf Ubuntu heisst das installierte Binary batcat statt bat, weil es einen Namenskonflikt mit einem anderen Paket gibt. Das bedeutet, dass du nach der Installation batcat statt bat tippen musst - oder du legst dir einen Alias an, wie im naechsten Code-Block gezeigt. Stell dir vor, du tippst bat file.js und bekommst "command not found" - das liegt genau an diesem Namensunterschied. Pruefe nach der Installation mit batcat --version ob alles funktioniert.
sudo apt install bat
⚠️ Wichtig Auf Ubuntu heißt der Command batcat (Konflikt mit anderem Paket)
Um trotzdem den gewohnten Befehl bat nutzen zu koennen, legst du einen Alias an. Dieser Alias sorgt dafuer, dass deine Shell bei jedem Aufruf von bat automatisch batcat ausfuehrt. Der echo-Befehl haengt die Alias-Definition an deine .bashrc-Datei an, und source laedt die Konfiguration neu, damit der Alias sofort verfuegbar ist. Ohne diesen Schritt muestest du bei jedem Aufruf batcat statt bat tippen, was besonders nervig wird, wenn du Tutorials oder Skripte von anderen Systemen uebernimmst. Alternativ kannst du auch einen Symlink anlegen mit ln -s /usr/bin/batcat ~/.local/bin/bat.
# Alias erstellen:
echo "alias bat='batcat'" >> ~/.bashrc
source ~/.bashrc
Arch Linux:
Auf Arch Linux ist bat im offiziellen Community-Repository verfuegbar. Die Installation ueber pacman ist der schnellste und zuverlaessigste Weg. Arch-Nutzer bekommen in der Regel die aktuellste Version, da Arch ein Rolling-Release-Modell nutzt. Im Gegensatz zu Ubuntu gibt es hier keinen Namenskonflikt - der Befehl heisst direkt bat. Nach der Installation steht bat sofort zur Verfuegung.
sudo pacman -S bat
Windows (Chocolatey):
Auf Windows installierst du bat am einfachsten ueber den Paketmanager Chocolatey. Falls du Chocolatey noch nicht hast, installiere es zuerst ueber die offizielle Website chocolatey.org. Alternativ kannst du auch Scoop als Paketmanager nutzen (scoop install bat). Nach der Installation funktioniert bat in der PowerShell und in der Windows-Kommandozeile. Beachte dass die Farbdarstellung in der Standard-Eingabeaufforderung eingeschraenkt sein kann - das Windows Terminal bietet die beste Erfahrung.
choco install bat
⚠️ Warnung: Auf Ubuntu/Debian heisst der Befehlbatcatstattbat. Erstelle unbedingt einen Alias, sonst wirst du dich staendig wundern, warumbatnicht funktioniert.
Quick Start (30 Sekunden)
Mit diesen Grundbefehlen kannst du bat sofort einsetzen.
Basis-Usage:
Die einfachste Verwendung zeigt eine Datei mit Syntax Highlighting, Zeilennummern und Git-Markierungen an. Wenn du einfach bat dateiname tippst, erkennt bat die Programmiersprache automatisch anhand der Dateiendung und wendet das passende Farbschema an. Du kannst auch mehrere Dateien gleichzeitig anzeigen - bat trennt sie dann visuell mit einem Header, der den Dateinamen zeigt. Fuer lange Dateien aktiviert bat automatisch einen Pager (aehnlich wie less), durch den du mit den Pfeiltasten scrollen kannst. Stell dir vor, du willst schnell drei Dateien vergleichen, die du gerade bearbeitet hast - mit bat siehst du alle nacheinander, farbig formatiert und klar getrennt. Das ist besonders nuetzlich, wenn du nach einem git stash pop pruefen willst, ob alle Dateien korrekt wiederhergestellt wurden.
# Datei anzeigen
bat file.js
# Mehrere Dateien
bat file1.js file2.ts
# Mit Paginierung (für lange Dateien)
bat --paging=always large-file.log
Wichtigste Flags: Mit diesen Flags steuerst du, wie bat den Output darstellt - von minimalistisch bis maximal detailliert:
# Nur Plain Text (ohne Decorations)
bat --plain file.txt
# Nur Syntax Highlighting (ohne Line Numbers)
bat --style=plain file.js
# Bestimmten Sprache erzwingen
bat --language=json config.txt
# Git-Diff zeigen
bat --diff file.js
# Line Range anzeigen
bat --line-range 10:20 file.js
Advanced Usage
Fuer den taeglichen Einsatz lohnt es sich, bat als Standard-Tool einzurichten und mit anderen Werkzeugen zu kombinieren.
1. Als cat-Replacement konfigurieren:
Wenn du cat durch bat ersetzt, profitierst du automatisch bei jedem Datei-Aufruf von Syntax Highlighting:
# In ~/.bashrc oder ~/.zshrc:
alias cat='bat --paging=never'
→ Jetzt hast du überall Syntax Highlighting!
🚀 Beispiel: Mit bat --diff kannst du nach jeder Claude Code Aenderung sofort sehen, welche Zeilen modifiziert wurden - farbig hervorgehoben und mit Zeilennummern.
2. Theme wechseln: bat bietet ueber 20 Farbschemata an, die du an dein Terminal anpassen kannst:
# Verfügbare Themes anzeigen
bat --list-themes
# Theme setzen
bat --theme="Monokai Extended" file.js
# Permanent in Config:
mkdir -p ~/.config/bat
echo '--theme="Monokai Extended"' > ~/.config/bat/config
3. Custom Language Mapping: Fuer Dateien die bat nicht automatisch erkennt, kannst du die Sprache manuell zuordnen:
# .env Dateien als Shell-Scripts highlighten
bat --map-syntax '.env:Bourne Again Shell (bash)' .env
4. Mit anderen Tools kombinieren: bat entfaltet seine volle Staerke in Kombination mit anderen CLI-Tools wie fzf und ripgrep:
# Mit fzf (Fuzzy Finder)
fzf --preview 'bat --color=always --style=numbers {}'
# Mit ripgrep
rg "function" -l | xargs bat
# Pipe Output
echo "console.log('Hello')" | bat --language=js
Best Practices
Diese Best Practices helfen dir, bat optimal in deinen Workflow zu integrieren und das Maximum aus dem Tool herauszuholen.
. **Alias für häufige Use-Cases**
Aliases sparen dir Tipparbeit und machen haeufige Befehle zu Einzeilern:
# In ~/.bashrc oder ~/.zshrc
alias bcat='bat --paging=never' # Schnelles Anzeigen
alias bdiff='bat --diff' # Git-Diff-Mode
alias blog='bat --paging=always' # Log-Files mit Pager
alias bplain='bat --plain --paging=never' # Nur Highlighting
. **Integration in Git**
Wenn du bat als Git-Pager einrichtest, werden alle Git-Outputs automatisch syntax-highlighted dargestellt:
# Als Git Pager (in ~/.gitconfig)
[core]
pager = bat --paging=always
[pager]
diff = bat --diff
. **Performance bei großen Dateien**
Bei grossen Log-Dateien oder Datendumps kann bat langsam werden - diese Flags halten den Output schlank:
# Nur bestimmte Lines anzeigen
bat --line-range :100 huge-file.log
# Paginierung ausschalten bei Pipes
bat --paging=never file.txt | grep "error"
. **Sprach-Erkennung verbessern**
Manche Dateierweiterungen erkennt bat nicht automatisch - mit Mappings in der Config hilfst du nach:
# Für unbekannte Extensions in Config:
--map-syntax '*.conf:INI'
--map-syntax '*.log:log'
--map-syntax 'Dockerfile*:Dockerfile'
. **Farb-Schema an Terminal anpassen**
Das richtige Theme haengt von deinem Terminal-Hintergrund ab - ein falsches Theme macht Text unleserlich:
# Für dunkle Terminals
bat --theme="TwoDark"
# Für helle Terminals
bat --theme="GitHub"
# High Contrast
bat --theme="Monokai Extended"
. **Kombiniere mit `less` für Navigation**
bat nutzt automatisch less als Pager bei langen Dateien - diese Tastenkuerzel helfen bei der Navigation:
# bat nutzt less als Pager
# → Navigiere mit:
# - Space: Nächste Seite
# - /pattern: Suchen
# - q: Beenden
bat large-file.js
. **Für Claude Code Workflows**
Im typischen Claude Code Workflow nutzt du bat vor und nach jeder Aenderung, um den aktuellen Stand und die Diffs zu pruefen:
# Vor Edit: Datei reviewen
bat src/components/Header.jsx
# Nach Edit: Änderungen checken
bat --diff src/components/Header.jsx
# Log-Analyse
bat logs/claude-code-$(date +%Y-%m-%d).log
Beispiele - Real-World Use-Cases
Diese Praxisbeispiele zeigen dir Schritt fuer Schritt, wie du bat in realen Entwicklungs-Szenarien einsetzt.
Beispiel 1: Code-Review Workflow
Szenario: Du sollst Pull-Request reviewen mit 5 geänderten Files.
Beim Code-Review eines Pull Requests willst du schnell sehen, welche Dateien geaendert wurden und was genau sich geaendert hat. Statt die GitHub Web-UI zu laden und durch Tabs zu klicken, kannst du mit bat direkt im Terminal alle geaenderten Dateien mit Syntax Highlighting und Diff-Markierungen durchgehen. Der Befehl git diff --name-only main listet dir zuerst alle betroffenen Dateien auf, und dann zeigst du jede einzelne mit bat --diff an. Alternativ kombinierst du beide Befehle mit xargs fuer einen One-Liner, der alles auf einmal anzeigt. Das Ergebnis ist ein farbiger, zeilennummerierter Output mit gruenen Markierungen fuer neue Zeilen und roten fuer geloeschte.
# 1. Liste geänderte Files
git diff --name-only main
# 2. Review jeden File mit bat
bat --diff src/api/userRoutes.js
bat --diff src/components/LoginForm.jsx
bat --diff tests/userRoutes.test.js
# 3. Schneller: Alle auf einmal
git diff --name-only main | xargs bat --diff
# Ergebnis: Du siehst sofort:
# - Syntax-highlighted Code
# - Welche Lines geändert wurden
# - Git-Diff-Marker (+ für neu, - für gelöscht)
Zeit gespart: 5 Minuten pro Review (vs. GitHub Web-UI laden)
💡 Tipp: Kombiniere git diff --name-only | xargs bat --diff als Shell-Alias fuer blitzschnelle Code-Reviews direkt im Terminal.
Beispiel 2: Debugging Session
Szenario: App crasht, du musst Logs analysieren.
Wenn deine Anwendung in der Produktion oder Entwicklung einen Fehler wirft, ist die Log-Datei dein erster Anlaufpunkt. Mit bat bekommst du statt einer grauen Textwueste einen farbig formatierten Output, in dem Timestamps, Error-Level und Stack Traces visuell voneinander getrennt sind. Das ist besonders wertvoll bei grossen Log-Dateien mit tausenden Eintraegen, wo du ohne Farben minutenlang nach der relevanten Stelle suchen wuerdest. Kombiniere bat mit grep, um nur die relevanten Zeilen plus Kontext anzuzeigen, oder nutze --line-range um nur die letzten 50 Zeilen zu sehen. Das Ergebnis: Du findest die Fehlerursache in Sekunden statt Minuten.
# Problem: Welche Error-Message?
bat logs/error.log
# Mit Syntax Highlighting siehst du sofort:
# - Timestamps in grau
# - ERROR in rot
# - Stack Traces formatiert
# Bestimmte Zeilen suchen
bat logs/error.log | grep -A 5 "TypeError"
# Oder: Nur letzte 50 Zeilen
bat --line-range -50: logs/error.log
Mit cat: Alles graue Textwüste, schwer zu parsen
Mit bat: Errors springen sofort ins Auge 👀
Beispiel 3: Config-Files Vergleichen
Szenario: Production-Config vs. Staging-Config vergleichen.
Bei der Arbeit mit mehreren Umgebungen (Production, Staging, Development) musst du haeufig pruefen, welche Umgebungsvariablen sich unterscheiden. Ein fehlender oder falscher Wert in der Production-Config kann zu Ausfaellen fuehren. Mit bat zeigst du beide Config-Dateien syntax-highlighted an und siehst sofort, wo sich Werte unterscheiden. Fuer einen direkten Vergleich kannst du bat auch mit dem diff-Befehl kombinieren, indem du die Outputs als Streams uebergibst. Das Ergebnis ist ein klarer Ueberblick ueber die Unterschiede zwischen den Umgebungen.
# Nebeneinander anzeigen
bat config/production.env
bat config/staging.env
# Oder: Direkter Vergleich (mit diff)
diff <(bat --plain config/production.env) \
<(bat --plain config/staging.env)
# Oder: Mit Git (wenn in Repo)
bat --diff config/production.env
Resultat: Du siehst sofort, welche ENV-Vars unterschiedlich sind.
Beispiel 4: Schnelle Dokumentation
Szenario: Neues Projekt klonen, README verstehen.
Wenn du ein neues Repository klonst, ist die README.md normalerweise der erste Anlaufpunkt um zu verstehen, was das Projekt tut und wie du es einrichtest. Mit cat README.md bekommst du allerdings nur Rohtext mit Markdown-Syntax-Zeichen wie #, ** und ` - das ist muehsam zu lesen. bat erkennt Markdown automatisch und hebt Ueberschriften, Code-Blocks und Links farbig hervor, sodass die Struktur sofort sichtbar wird. Fuer noch besseres Markdown-Rendering nutze glow, aber bat ist ideal fuer schnelles Scannen. Das Ergebnis ist ein farbig strukturierter Text, der dir sofort zeigt wo Installation, Usage und API-Dokumentation stehen.
# Klassisch (schlecht)
cat README.md # Graue Textwüste
# Mit bat (gut)
bat README.md # Markdown-Highlighting!
# Headlines in blau
# Code-Blocks in grau
# Links in cyan
# Bullets formatiert
Bonus: Fuer vollstaendiges Markdown-Rendering mit korrekten Ueberschriften, Tabellen und formatierten Listen nutze glow. bat zeigt dir die Markdown-Syntax farbig hervorgehoben, waehrend glow die Syntax interpretiert und als formatierten Text darstellt. Die Kombination beider Tools deckt alle Situationen ab: bat fuer schnelles Scannen und Code-Blocks, glow fuer laengere Dokumente mit komplexer Formatierung. Stell dir vor, du willst nur kurz pruefen ob ein bestimmter Abschnitt in der README existiert - dafuer reicht bat. Willst du die gesamte Dokumentation in Ruhe lesen, nimm glow.
glow README.md # Für komplexes Markdown
bat README.md # Für schnelles Scannen
Beispiel 5: Claude Code Integration
Szenario: Du arbeitest mit Claude Code an einem Feature.
In einem typischen Claude Code Workflow aendert Claude automatisch Dateien in deinem Projekt. Dabei ist es wichtig, dass du vor und nach jeder Aenderung den aktuellen Stand der Dateien pruefst. Mit bat reviewst du die Datei vorher, um den Kontext zu verstehen, und danach mit --diff um zu sehen, was genau Claude geaendert hat. Du kannst auch den Development-Server-Output mit bat formatiert anzeigen lassen, um Fehler schneller zu erkennen. Am Ende einer Session pruefst du alle geaenderten Dateien auf einmal mit einer Kombination aus git diff --name-only und bat. Dieser Workflow gibt dir die volle Kontrolle ueber Claude Codes Aenderungen.
# 1. Vor Änderung: File reviewen
bat src/components/DiscordWidget.jsx
# 2. Claude macht Änderungen
# 3. Nach Änderung: Diff checken
bat --diff src/components/DiscordWidget.jsx
# 4. Testing: Log-Output monitoren
npm run dev 2>&1 | bat --language=log --paging=never
# 5. Finale Review: Alle geänderten Files
git diff --name-only | xargs bat --diff
Produktivität: 30% schneller, weil du nicht zwischen Terminal und Editor wechselst.
Claude Code Integration
Diese Workflows zeigen dir, wie du bat nahtlos in deinen Claude Code Entwicklungsprozess einbindest.
Workflow 1: Datei vor Aenderungen reviewen
Bevor Claude Code eine Datei bearbeitet, verschaffst du dir mit bat einen schnellen Ueberblick ueber den aktuellen Stand:
# Schneller Ueberblick ueber eine Datei bevor Claude Code sie bearbeitet
bat src/components/Header.tsx
Workflow 2: Claude Code Aenderungen pruefen
Nach einem Claude Code Edit siehst du mit --diff sofort, welche Zeilen geaendert wurden:
# Nach einem Claude Code Edit: Diff sofort sehen
bat --diff src/components/Header.tsx
Workflow 3: Alle geaenderten Files auf einmal reviewen
Am Ende einer Session pruefst du alle Aenderungen auf einmal, bevor du committest:
# Nach einer Claude Code Session: Alle Aenderungen ueberpruefen
git diff --name-only | xargs bat --diff
💡 Tipp: Nutze bat in einem separaten Terminal-Pane um Claude Code Aenderungen in Echtzeit zu ueberpruefen, bevor du sie committest.
Troubleshooting
Hier findest du Loesungen fuer die haeufigsten Probleme bei der Nutzung von bat.
Problem: "Command not found: bat"
Dieses Problem tritt auf Ubuntu/Debian auf, weil das Paket dort batcat heisst (Namenskonflikt mit einem anderen Paket). Du tippst bat, aber die Shell findet den Befehl nicht.
Ubuntu/Debian:
# Paket heißt anders
sudo apt install bat
# Aber Command ist batcat
batcat file.txt
# Fix: Alias erstellen
echo "alias bat='batcat'" >> ~/.bashrc
source ~/.bashrc
Problem: "Falsche Sprache erkannt"
bat erkennt die Programmiersprache anhand der Dateiendung. Wenn die Endung fehlt oder ungewoehnlich ist, wird der falsche Syntax-Highlighter verwendet und der Code sieht komisch aus.
# Manuelle Sprache setzen
bat --language=javascript config.txt
# Oder: Extension mapping
bat --map-syntax '.config:JSON' app.config
Problem: "Theme zu dunkel/hell"
Wenn Text auf deinem Hintergrund kaum lesbar ist, passt das aktuelle Theme nicht zu deinem Terminal-Farbschema. Wechsle zu einem Theme das zu deinem Hintergrund passt.
# Liste alle Themes
bat --list-themes
# Teste Themes
bat --theme="<Theme-Name>" file.js
# Setze permanent
echo '--theme="<Theme-Name>"' >> ~/.config/bat/config
Problem: "Zu viele Decorations (Line Numbers, etc.)"
Manchmal stoeren Zeilennummern und Git-Marker, zum Beispiel wenn du bat-Output in eine Pipe weiterleiten willst. Mit diesen Flags reduzierst du die Ausgabe auf das Wesentliche.
# Plain-Mode (nur Highlighting)
bat --style=plain file.js
# Nur Text (wie cat)
bat --plain file.txt
# Custom Style
bat --style=numbers,changes file.js
bat vs. cat - Der Vergleich
| Feature | cat | bat |
|---------|-------|-------|
| Syntax Highlighting | ❌ | ✅ (100+ Sprachen) |
| Line Numbers | ❌ | ✅ |
| Git Integration | ❌ | ✅ |
| Paginierung | ❌ | ✅ |
| Themes | ❌ | ✅ (20+ Themes) |
| Speed | 🚀 Instant | 🚀 Fast (minimal overhead) |
| Portabilität | ✅ Überall | ⚠️ Muss installiert werden |
Fazit: bat ist das moderne cat - same speed, 10x mehr Features.
Weiterführende Links
Offizielle Ressourcen
- GitHub: https://github.com/sharkdp/bat
- Docs: https://github.com/sharkdp/bat#readme
- User Guide: https://github.com/sharkdp/bat#user-content-usage
Community
- Discussions: https://github.com/sharkdp/bat/discussions
- Issues: https://github.com/sharkdp/bat/issues
Tutorials
- [bat Cheatsheet](https://devhints.io/bat)
- [Modern Unix Tools](https://github.com/ibraheemdev/modern-unix)
Verwandte Tools
- glow: Markdown Rendering (kombiniere mit bat)
- delta: Git-Diff-Tool (nutzt bat)
- fzf: Fuzzy Finder (nutze bat als Preview)
Pro-Tipps
Diese Tipps gehen ueber die Grundlagen hinaus und zeigen dir, wie du bat in Automatisierung und fortgeschrittene Workflows integrierst.
. **bat in Scripts nutzen**
bat eignet sich auch fuer Shell-Skripte, zum Beispiel um bei Deployments automatisch Config-Dateien zu pruefen:
#!/bin/bash
# deploy-check.sh
echo "📋 Checking deployment configs..."
bat --plain --line-range 1:10 config/production.env
if bat config/production.env | grep -q "DEBUG=true"; then
echo "❌ ERROR: Debug mode in production!"
exit 1
fi
. **bat als Git Commit Preview**
Mit einem Git-Alias kannst du vor jedem Commit alle geaenderten Dateien syntax-highlighted ueberpruefen:
# In ~/.gitconfig
[alias]
preview = "!git diff --name-only | xargs bat --diff"
# Nutzen:
git preview
. **Automatische Language Detection verbessern**
Trage in der bat-Config dauerhafte Syntax-Zuordnungen ein, damit unbekannte Dateitypen immer korrekt erkannt werden:
# In ~/.config/bat/config
--map-syntax '.env:Bourne Again Shell (bash)'
--map-syntax '*.conf:INI'
--map-syntax 'Dockerfile*:Dockerfile'
--map-syntax '*.log:log'
Zusammenfassung
bat ist dein neues cat - installiere es einmal, nutze es für immer.
Quick Wins:
- ✅ Syntax Highlighting für alle Files
- ✅ Git-Diffs ohne extra Tool
- ✅ Zeilennummern für bessere Navigation
- ✅ Funktioniert in allen Workflows
Installation: 1 Minute Learning Curve: 5 Minuten Produktivität: +20% beim Code-Lesen
- [02 - eza](./02-eza.md) - Modernes
ls(perfekt mit bat) - [04 - glow](./04-glow.md) - Markdown Rendering (kombiniere mit bat)
- [13 - ripgrep](./13-ripgrep.md) - Suche, dann zeige mit bat