如何安裝 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。交互阅读去掉这些选项即可。
讀完設定後對齊一張圖
终端里理清模块边界后,服务关系仍適合摊在同一张白板上。见 如何建立空間。