简介
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 的语法高亮查看器