$ terminals _

bat

带语法高亮和 Git 集成的 cat 命令替代品

GitHub brew install bat

简介

bat 是 cat 命令的现代替代品,支持语法高亮、Git 差异标注、自动分页等功能。它让终端中查看文件内容变得更加美观和高效。

安装

# macOS
brew install bat

# Ubuntu/Debian
sudo apt install bat
# 注意:Ubuntu 中命令名可能是 batcat

# Cargo
cargo install bat

核心功能

  • 语法高亮: 支持 200+ 种编程语言和文件格式
  • Git 集成: 在左侧边栏显示文件修改状态(+/-/~)
  • 自动分页: 内容超出一屏时自动使用分页器
  • 行号显示: 默认显示行号,方便定位
  • 不可打印字符: 可显示不可打印字符和空白字符

常用命令

# 查看文件(带语法高亮)
bat file.py

# 仅显示内容,不带行号和边框
bat -p file.py

# 显示不可打印字符
bat -A file.txt

# 指定语言高亮
bat --language=json data.txt

# 查看 diff
diff file1 file2 | bat -l diff

# 作为 man 的高亮后端
export MANPAGER="sh -c 'col -bx | bat -l man -p'"

配置推荐

# 在 .zshrc 中设置别名和环境变量
alias cat="bat"
export BAT_THEME="Tokyo Night"
export BAT_STYLE="numbers,changes,header"

典型场景

场景一:替代 cat,随时高亮查看配置文件

调试 nginx、sshd 等配置时,传统 cat 输出无高亮、难分辨。换用 bat:

bat /etc/nginx/nginx.conf
bat ~/.ssh/config
bat /etc/hosts

左侧 Git 状态栏会标出你最近改过哪几行,配合 -n 显示行号,报错定位一步到位。


场景二:作为 fzf 预览后端

将 bat 挂进 fzf 预览窗口,模糊搜索文件的同时实时高亮预览:

# 搜索文件并在右侧预览内容
fzf --preview 'bat --color=always --style=numbers --line-range=:100 {}'

# 也可以写进 .zshrc 让所有 fzf 搜索默认带预览
export FZF_DEFAULT_OPTS='--preview "bat --color=always {}"'

场景三:美化 man 手册

让 man 页面也带上语法高亮:

# 在 .zshrc 中添加
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
export MANROFFOPT="-c"

# 之后 man 命令自动高亮
man git-rebase

场景四:查看 diff 输出

# 两个文件对比,结果高亮
diff old_config.yaml new_config.yaml | bat -l diff

# git diff 结果高亮查看(不依赖 delta)
git diff HEAD~1 | bat -l diff

推荐搭配

  • fzf — 作为 fzf 预览窗口的高亮后端
  • ripgrep — 搜索结果的高亮查看
  • delta — Git diff 的语法高亮查看器