bat-cat

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

bat - Better cat

bat - 增强版cat

cat
with syntax highlighting, line numbers, and Git integration.
具备语法高亮、行号显示和Git集成功能的
cat
替代工具。

Quick Start

快速开始

Basic usage

基础用法

bash
undefined
bash
undefined

View file with syntax highlighting

查看带语法高亮的文件

bat README.md
bat README.md

Multiple files

查看多个文件

bat file1.js file2.py
bat file1.js file2.py

With line numbers (default)

显示行号(默认开启)

bat script.sh
bat script.sh

Without line numbers

不显示行号

bat -p script.sh
undefined
bat -p script.sh
undefined

Viewing modes

查看模式

bash
undefined
bash
undefined

Plain mode (like cat)

纯文本模式(类似cat)

bat -p file.txt
bat -p file.txt

Show non-printable characters

显示不可打印字符

bat -A file.txt
bat -A file.txt

Squeeze blank lines

压缩空行

bat -s file.txt
bat -s file.txt

Paging (auto for large files)

分页显示(大文件自动启用)

bat --paging=always file.txt bat --paging=never file.txt
undefined
bat --paging=always file.txt bat --paging=never file.txt
undefined

Syntax Highlighting

语法高亮

Language detection

语言检测

bash
undefined
bash
undefined

Auto-detect from extension

根据文件扩展名自动检测

bat script.py
bat script.py

Force specific language

强制指定语言

bat -l javascript config.txt
bat -l javascript config.txt

Show all languages

查看所有支持的语言

bat --list-languages
undefined
bat --list-languages
undefined

Themes

主题

bash
undefined
bash
undefined

List available themes

查看所有可用主题

bat --list-themes
bat --list-themes

Use specific theme

使用指定主题

bat --theme="Monokai Extended" file.py
bat --theme="Monokai Extended" file.py

Set default theme in config

在配置文件中设置默认主题

~/.config/bat/config: --theme="Dracula"

~/.config/bat/config: --theme="Dracula"

undefined
undefined

Line Ranges

行范围

bash
undefined
bash
undefined

Show specific lines

显示指定行

bat -r 10:20 file.txt
bat -r 10:20 file.txt

From line to end

从指定行显示到文件末尾

bat -r 100: file.txt
bat -r 100: file.txt

Start to specific line

从文件开头显示到指定行

bat -r :50 file.txt
bat -r :50 file.txt

Multiple ranges

显示多个行范围

bat -r 1:10 -r 50:60 file.txt
undefined
bat -r 1:10 -r 50:60 file.txt
undefined

Git Integration

Git集成

bash
undefined
bash
undefined

Show Git modifications (added/removed/modified lines)

显示Git修改内容(新增/删除/修改的行)

bat --diff file.txt
bat --diff file.txt

Show decorations (Git + file header)

显示装饰信息(Git标识 + 文件头部)

bat --decorations=always file.txt
undefined
bat --decorations=always file.txt
undefined

Output Control

输出控制

bash
undefined
bash
undefined

Output raw (no styling)

输出原始内容(无样式)

bat --style=plain file.txt
bat --style=plain file.txt

Customize style

自定义输出样式

bat --style=numbers,changes file.txt
bat --style=numbers,changes file.txt

Available styles: auto, full, plain, changes, header, grid, numbers, snip

可用样式:auto, full, plain, changes, header, grid, numbers, snip

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

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
快速预览文件:
bash
bat file.json
带语法高亮查看日志:
bash
bat error.log
可视化对比文件:
bash
bat --diff file1.txt
bat file2.txt
编辑前预览:
bash
bat config.yaml && vim config.yaml
管道中的cat替代工具:
bash
bat -p file.txt | grep "pattern"
查看指定函数:
bash
bat -r 45:67 script.py  # 假设函数位于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
作为man手册的分页器:
bash
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
man grep
与ripgrep配合使用:
bash
rg "pattern" -l | xargs bat
与fzf配合使用:
bash
fzf --preview 'bat --color=always --style=numbers {}'
与diff配合使用:
bash
diff -u file1 file2 | bat -l diff

Configuration

配置

Create
~/.config/bat/config
for defaults:
undefined
创建
~/.config/bat/config
文件来设置默认参数:
undefined

Set theme

设置主题

--theme="Dracula"
--theme="Dracula"

Show line numbers, Git modifications and file header, but no grid

显示行号、Git修改内容和文件头部,但不显示网格线

--style="numbers,changes,header"
--style="numbers,changes,header"

Use italic text on terminal

在终端中使用斜体文本

--italic-text=always
--italic-text=always

Add custom mapping

添加自定义语法映射

--map-syntax "*.conf:INI"
undefined
--map-syntax "*.conf:INI"
undefined

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
  • 管道传输时使用
    -p
    开启纯文本模式
  • 当输出用于程序化处理时,使用
    --paging=never
  • bat
    会缓存已解析的文件,以加快后续访问速度

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
  • 别名设置:
    alias cat='bat -p'
    实现无缝替代cat
  • 分页器设置: 通过
    export PAGER="bat"
    将bat设为默认分页器
  • Debian/Ubuntu系统: 命令可能为
    batcat
    而非
    bat
  • 自定义语法: 添加到
    ~/.config/bat/syntaxes/
    目录
  • 性能提示: 对于超大文件,使用
    bat --paging=never
    或原生
    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)
  • -p
    /
    --plain
    : 纯文本模式(无行号/装饰信息)
  • -n
    /
    --number
    : 仅显示行号
  • -A
    /
    --show-all
    : 显示不可打印字符
  • -l
    /
    --language
    : 设置语法高亮的语言
  • -r
    /
    --line-range
    : 仅显示指定行范围

Documentation

文档