bat-cat
GitHubbat是cat的增强替代品,提供语法高亮、行号和Git集成。支持自动语言检测、主题定制、行范围查看及多种输出风格,适用于代码预览和日志分析。
Trigger Scenarios
Install
npx skills add NeverSight/learn-skills.dev --skill bat-cat -g -y
SKILL.md
Frontmatter
{
"name": "bat-cat",
"homepage": "https:\/\/github.com\/sharkdp\/bat",
"metadata": {
"clawdbot": {
"emoji": "🦇",
"install": [
{
"id": "brew",
"bins": [
"bat"
],
"kind": "brew",
"label": "Install bat (brew)",
"formula": "bat"
},
{
"id": "apt",
"bins": [
"bat"
],
"kind": "apt",
"label": "Install bat (apt)",
"package": "bat"
}
],
"requires": {
"bins": [
"bat"
]
}
}
},
"description": "A cat clone with syntax highlighting, line numbers, and Git integration - a modern replacement for cat."
}
bat - Better cat
cat with syntax highlighting, line numbers, and Git integration.
Quick Start
Basic usage
# View file with syntax highlighting
bat README.md
# Multiple files
bat file1.js file2.py
# With line numbers (default)
bat script.sh
# Without line numbers
bat -p script.sh
Viewing modes
# Plain mode (like cat)
bat -p file.txt
# Show non-printable characters
bat -A file.txt
# Squeeze blank lines
bat -s file.txt
# Paging (auto for large files)
bat --paging=always file.txt
bat --paging=never file.txt
Syntax Highlighting
Language detection
# Auto-detect from extension
bat script.py
# Force specific language
bat -l javascript config.txt
# Show all languages
bat --list-languages
Themes
# List available themes
bat --list-themes
# Use specific theme
bat --theme="Monokai Extended" file.py
# Set default theme in config
# ~/.config/bat/config: --theme="Dracula"
Line Ranges
# Show specific lines
bat -r 10:20 file.txt
# From line to end
bat -r 100: file.txt
# Start to specific line
bat -r :50 file.txt
# Multiple ranges
bat -r 1:10 -r 50:60 file.txt
Git Integration
# Show Git modifications (added/removed/modified lines)
bat --diff file.txt
# Show decorations (Git + file header)
bat --decorations=always file.txt
Output Control
# Output raw (no styling)
bat --style=plain file.txt
# Customize style
bat --style=numbers,changes file.txt
# Available styles: auto, full, plain, changes, header, grid, numbers, snip
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 # If function is on lines 45-67
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
-pfor plain mode when piping - Use
--paging=neverwhen output is used programmatically batcaches 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
batcatinstead ofbat - Custom syntaxes: Add to
~/.config/bat/syntaxes/ - Performance: For huge files, use
bat --paging=neveror plaincat
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
Version History
- e0220ca Current 2026-07-05 21:40


