What bat Does
- Syntax highlighting — 200+ languages via syntect
- Git integration — show modified/added lines
- Automatic paging — pipe into
lessfor long files - Line numbers — optional
- File concatenation — works like cat when piped
- Themes — 20+ built-in, Sublime Text theme compatible
- fzf integration — beautiful previews
- man pager — render man pages with syntax
Architecture
Rust binary using syntect for syntax highlighting (parses Sublime .sublime-syntax files) and less for paging. Detects terminal capabilities (256 colors, truecolor, piped vs tty).
Self-Hosting
CLI tool, self-contained binary.
Key Features
- 200+ languages
- Git diff indicators
- Auto pager (less)
- Customizable themes
- Works as drop-in cat replacement
- Can serve as man pager
- fzf preview integration
- Ligature-friendly output
Comparison
| Tool | Highlight | Git | Themes |
|---|---|---|---|
| bat | 200+ | Yes | 20+ |
| cat | No | No | No |
| ccat | 25 | No | Few |
| pygmentize | 300+ | No | Via CLI |
| rich (Python) | 100+ | No | Via lib |
常见问题 FAQ
Q: Ubuntu 上叫 batcat?
A: 是的。Debian 因命名冲突改为 batcat。可以 alias bat=batcat 或 mkdir -p ~/.local/bin && ln -s /usr/bin/batcat ~/.local/bin/bat。
Q: 怎么设为默认 manpager?
A: 设置 MANPAGER 环境变量为 sh -c "col -bx | bat -l man -p",man 页面会变得漂亮。
Q: 自定义语法和主题?
A: 放 .sublime-syntax / .tmTheme 到 bat --config-dir 对应子目录,然后 bat cache --build。
来源与致谢 Sources
- GitHub: https://github.com/sharkdp/bat
- License: Apache 2.0 / MIT