| name | bat-cat |
| description | A cat clone with syntax highlighting, line numbers, and Git integration - a modern replacement for cat. |
| homepage | https://github.com/sharkdp/bat |
| metadata | {"clawdbot":{"emoji":"🦇","requires":{"bins":["bat"]},"install":[{"id":"brew","kind":"brew","formula":"bat","bins":["bat"],"label":"Install bat (brew)"},{"id":"apt","kind":"apt","package":"bat","bins":["bat"],"label":"Install bat (apt)"}]}} |
bat - Better cat
cat with syntax highlighting, line numbers, and Git integration.
Quick Start
Basic usage
bat README.md
bat file1.js file2.py
bat script.sh
bat -p script.sh
Viewing modes
bat -p file.txt
bat -A file.txt
bat -s file.txt
bat --paging=always file.txt
bat --paging=never file.txt
Syntax Highlighting
Language detection
bat script.py
bat -l javascript config.txt
bat --list-languages
Themes
bat --list-themes
bat --theme="Monokai Extended" file.py
Line Ranges
bat -r 10:20 file.txt
bat -r 100: file.txt
bat -r :50 file.txt
bat -r 1:10 -r 50:60 file.txt
Git Integration
bat --diff file.txt
bat --decorations=always file.txt
Output Control
bat --style=plain file.txt
bat --style=numbers,changes file.txt
bat --style=header,grid,numbers file.txt
Common Use Cases
Quick file preview:
bat file.json
View logs with syntax highlighting:
bat error.log
Compare files visually:
bat --diff file1.txt
bat file2.txt
Preview before editing:
bat config.yaml && vim config.yaml
Cat replacement in pipes:
bat -p file.txt | grep "pattern"
View specific function:
bat -r 45:67 script.py
Integration with other tools
As pager for man pages:
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
man grep
With ripgrep:
rg "pattern" -l | xargs bat
With fzf:
fzf --preview 'bat --color=always --style=numbers {}'
With diff:
diff -u file1 file2 | bat -l diff
Configuration
Create ~/.config/bat/config for defaults:
# Set theme
--theme="Dracula"
# Show line numbers, Git modifications and file header, but no grid
--style="numbers,changes,header"
# Use italic text on terminal
--italic-text=always
# Add custom mapping
--map-syntax "*.conf:INI"
Performance Tips
- Use
-p for plain mode when piping
- Use
--paging=never when output is used programmatically
bat caches parsed files for faster subsequent access
Tips
- Alias:
alias cat='bat -p' for drop-in cat replacement
- Pager: Use as pager with
export PAGER="bat"
- On Debian/Ubuntu: Command may be
batcat instead of bat
- Custom syntaxes: Add to
~/.config/bat/syntaxes/
- Performance: For huge files, use
bat --paging=never or plain cat
Common flags
-p / --plain: Plain mode (no line numbers/decorations)
-n / --number: Only show line numbers
-A / --show-all: Show non-printable characters
-l / --language: Set language for syntax highlighting
-r / --line-range: Only show specific line range(s)
Documentation
GitHub: https://github.com/sharkdp/bat
Man page: man bat
Customization: https://github.com/sharkdp/bat#customization