✓ Verified 💻 Development ✓ Enhanced Data

Bat Cat

A cat clone with syntax highlighting, line numbers, and Git integration.

Rating
4.4 (389 reviews)
Downloads
1,374 downloads
Version
1.0.0

Overview

A cat clone with syntax highlighting, line numbers, and Git integration.

Complete Documentation

View Source →

bat - Better cat

cat with syntax highlighting, line numbers, and Git integration.

Quick Start

Basic usage

bash
# 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

bash
# 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

bash
# Auto-detect from extension
bat script.py

# Force specific language
bat -l javascript config.txt

# Show all languages
bat --list-languages

Themes

bash
# 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

bash
# 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

bash
# Show Git modifications (added/removed/modified lines)
bat --diff file.txt

# Show decorations (Git + file header)
bat --decorations=always file.txt

Output Control

bash
# 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:

bash
bat file.json

View logs with syntax highlighting:

bash
bat error.log

Compare files visually:

bash
bat --diff file1.txt
bat file2.txt

Preview before editing:

bash
bat config.yaml && vim config.yaml

Cat replacement in pipes:

bash
bat -p file.txt | grep "pattern"

View specific function:

bash
bat -r 45:67 script.py  # If function is on lines 45-67

Integration with other tools

As pager for man pages:

bash
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
man grep

With ripgrep:

bash
rg "pattern" -l | xargs bat

With fzf:

bash
fzf --preview 'bat --color=always --style=numbers {}'

With diff:

bash
diff -u file1 file2 | bat -l diff

Configuration

Create ~/.config/bat/config for defaults:

text
# 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

Installation

Terminal bash

openclaw install bat-cat
    
Copied!

💻Code Examples

### Basic usage

-basic-usage.sh
# 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

-viewing-modes.sh
# 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

### Language detection

-language-detection.sh
# Auto-detect from extension
bat script.py

# Force specific language
bat -l javascript config.txt

# Show all languages
bat --list-languages

### Themes

-themes.sh
# 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"

bat --style=header,grid,numbers file.txt

bat---styleheadergridnumbers-filetxt.txt
## Common Use Cases

**Quick file preview:**

bat -r 45:67 script.py # If function is on lines 45-67

bat--r-4567-scriptpy--if-function-is-on-lines-45-67.txt
## Integration with other tools

**As pager for man pages:**

diff -u file1 file2 | bat -l diff

diff--u-file1-file2--bat--l-diff.txt
## Configuration

Create `~/.config/bat/config` for defaults:
example.sh
# 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
example.sh
# Show Git modifications (added/removed/modified lines)
bat --diff file.txt

# Show decorations (Git + file header)
bat --decorations=always file.txt
example.sh
# 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

Tags

#git_and-github #git #integration

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author arnarsson
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install bat-cat