如何安裝 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。

安裝brew · apt · dnf
分頁less · --paging
主題--theme · config
安裝 bat分頁与主題對照 cat

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 安裝

  1. 1
    macOS(Homebrew)

    brew install bat。驗證:which bat 与 bat --version。

  2. 2
    Debian / Ubuntu

    sudo apt update && sudo apt install bat。部分旧版包名可能不同;若无 bat,见 GitHub Releases 或 cargo install bat。

  3. 3
    Fedora / Arch

    Fedora:sudo dnf install bat。Arch:sudo pacman -S bat。

  4. 4
    Windows(可选)

    scoop install bat 或 choco install bat。本稿示例以 macOS/Linux 为主。

  5. 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.example

bat 与 cat 對照

目标batcat
交互读源码/配置bat file.tscat file.ts(无高亮)
管道进其他命令bat --paging=never --plain file | wc -lcat 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。交互阅读去掉这些选项即可。

讀完設定後對齊一張圖

终端里理清模块边界后,服务关系仍適合摊在同一张白板上。见 如何建立空間。

立即開會