如何安装 bat CLI:语法高亮 cat、分页、--theme 主题与 cat 对照
安装 bat,配置分页与主题,脚本里关闭 pager,并知道何时仍用 cat。
读 CI 日志、扫配置文件、核对 diff 时,裸 cat 没有语法高亮、行号也难对齐。bat(sharkdp 的 Rust 工具)把 cat 做成带语言检测、分页与主题的阅读器。本教程专注 macOS/Linux 安装 bat、分页行为、--theme 与配置、以及与 cat 的对照,面向 hereink 读者与 ripgrep、fd 并用的开发者终端栈。
检索词是如何安装 bat CLI 并设置分页与主题对比 cat。读完应能安装 bat、交互阅读一个大文件、在脚本里关掉分页,并选对 --theme 或持久化到 ~/.config/bat/config。
bat 解决什么问题
可读的「看文件」
bat src/lib.rs 自动猜语言、高亮关键字、默认显示行号与 Git 修改标记(若启用)。比反复 cat 再切 IDE 更轻,适合 SSH 到服务器或本地 quick peek。
与 rg、fd 同一工作流
rg -l pattern | xargs bat 按命中文件逐个高亮打开;fd -e md | xargs bat 批量预览。站内 fd 教程讲找路径;本篇只讲 bat 怎么读。
上游:
github.com/sharkdp/bat。安装后运行bat --version确认。
在 macOS 与 Linux 安装
- 1macOS(Homebrew)
brew install bat。验证:which bat与bat --version。 - 2Debian / Ubuntu
sudo apt update && sudo apt install bat。部分旧版包名可能不同;若无 bat,见 GitHub Releases 或cargo install bat。 - 3Fedora / Arch
Fedora:
sudo dnf install bat。Arch:sudo pacman -S bat。 - 4Windows(可选)
scoop install bat或choco install bat。本稿示例以 macOS/Linux 为主。 - 5第一条命令
在任意仓库:
bat README.md。终端足够高时会直接分页;短文件可能一次打完。
分页:何时进 less、脚本里怎么关
bat 默认在输出超过一屏时把内容交给分页器(通常是 less)。交互阅读这是优点;管道或脚本里则常要纯 stdout。
# 强制使用分页器(长输出)
bat long.log
# 脚本 / 管道:不要分页器
bat --paging=never package.json
# 等价:环境变量(适合 CI 一行)
export BAT_PAGER=""
bat --paging=never Dockerfile
# 只看前几屏:仍可在 less 里按 q 退出
bat --paging=always src/main.go--paging 取值常见为 auto(默认)、never、always。在 less 内:空格翻页、g/G 顶/底、/pattern 搜索——与直接 less file 习惯一致。
主题:--theme 与配置文件
bat 内置多套 TextMate 风格主题,与终端背景深浅要匹配才看得清。
# 列出内置主题(名称用于 --theme)
bat --list-themes
# 单次指定主题
bat --theme=TwoDark src/app.ts
bat --theme=GitHub README.md
# 持久化:~/.config/bat/config(路径见 bat --help)
echo '--theme="TwoDark"' >> ~/.config/bat/config
echo '--style="numbers,changes,header"' >> ~/.config/bat/config
# 环境变量(临时会话)
export BAT_THEME=Monokai Extended
bat Cargo.toml--style 控制行号、文件头、Git 变更条等是否显示。想要更接近 cat 的极简输出,用 --style=plain 或 bat --plain(仍可有高亮,装饰更少)。
常用阅读选项
# 强制语言(管道或无名后缀时)
rg -n "ERROR" app.log | bat -l log
# 只显示某行范围
bat -r 10:25 src/config.yaml
# 多个文件带文件名头
bat src/*.rs
# 显示不可见字符(查尾随空格)
bat -A .env.examplebat 与 cat 对照
| 目标 | bat | cat |
|---|---|---|
| 交互读源码/配置 | bat file.ts | cat file.ts(无高亮) |
| 管道进其他命令 | bat --paging=never --plain file | wc -l | cat file | wc -l |
| 合并多文件 | bat a b c(带文件头) | cat a b c |
| 二进制 | 仍会尝试高亮;不适合 | cat 同样不宜;用 xxd/file |
| POSIX / 最小镜像 | 需额外安装 | 系统自带 |
| 分页 | 默认 auto + less | 无;配合 less file |
可选:在 shell 里把 cat 别名成 bat --paging=never --plain 做日常替换;需要绝对兼容的旧脚本仍应调用 /bin/cat。
- 适合
- 终端里读代码与配置、review 日志片段、与 rg/fd 管道预览命中文件。
- 不适合
- 必须零依赖 POSIX 的容器入口脚本、或要把原文字节流进二进制工具——用
cat或bat --plain --paging=never并先目检输出。
和站内 fd+bat 教程重复吗?
那篇同时讲 fd 找文件与组合管道;本篇深入 bat 的安装、--paging、--theme 与 cat 对照。两篇互补。
主题在浅色终端发灰?
换浅色主题如 GitHub,或设 export BAT_THEME=GitHub。用 bat --list-themes | bat 预览每个主题在本地终端下的对比度。
bat 会破坏管道吗?
分页器或装饰字符会。脚本里固定加 --paging=never;要纯文本加 --plain。交互阅读去掉这些选项即可。
读完配置后对齐一张图
终端里理清模块边界后,服务关系仍适合摊在同一张白板上。见 如何创建空间。