Skills bat-cat
A cat clone with syntax highlighting, line numbers, and Git integration - a modern replacement for cat.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/arnarsson/bat-cat" ~/.claude/skills/clawdbot-skills-bat-cat && rm -rf "$T"
manifest:
skills/arnarsson/bat-cat/SKILL.mdsource content
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
for plain mode when piping-p - Use
when output is used programmatically--paging=never
caches parsed files for faster subsequent accessbat
Tips
- Alias:
for drop-in cat replacementalias cat='bat -p' - Pager: Use as pager with
export PAGER="bat" - On Debian/Ubuntu: Command may be
instead ofbatcatbat - Custom syntaxes: Add to
~/.config/bat/syntaxes/ - Performance: For huge files, use
or plainbat --paging=nevercat
Common flags
/-p
: Plain mode (no line numbers/decorations)--plain
/-n
: Only show line numbers--number
/-A
: Show non-printable characters--show-all
/-l
: Set language for syntax highlighting--language
/-r
: Only show specific line range(s)--line-range
Documentation
GitHub: https://github.com/sharkdp/bat Man page:
man bat
Customization: https://github.com/sharkdp/bat#customization