bat 是一个被称为“更好的 cat”的命令行工具,定位为现代版的 cat 替代品,具备语法高亮、行号和 Git 集成能力。
用途 bat 主要用于在终端中查看文件内容,并在 cat 的基础上增加语法高亮、行号显示和 Git 变更标记等特性。适合快速预览文件、查看日志、比较文件、编辑前预览,以及在管道中替代 cat 使用。
主要能力 语法高亮:自动根据文件扩展名检测语言,也可通过 -l/--language 强制指定语言;可列出所有支持的语言和主题。 行号:默认显示行号,可用 -p/--plain 关闭。 查看模式:支持 plain 模式(类似 cat)、显示不可打印字符(-A)、压缩空行(-s)、分页控制(--paging=always/never)。 行范围:可通过 -r/--line-range 查看指定行或行区间,支持单个区间、开头到某行、某行到结尾以及多个区间。 Git 集成:使用 --diff 显示 Git 修改(新增/删除/修改的行),使用 --decorations=always 显示 Git 与文件头部装饰信息。 输出控制:可用 --style 自定义显示样式,可用值为 auto、full、plain、changes、header、grid、numbers、snip,也可组合使用。 主题:可列出可用主题并通过 --theme 指定,例如 Monokai Extended、Dracula 等,也可在配置文件中设置默认主题。
使用方式 基本用法:bat README.md;可一次查看多个文件,如 bat file1.js file2.py。 关闭行号:bat -p script.sh。 plain 模式:bat -p file.txt;显示不可打印字符:bat -A file.txt;压缩空行:bat -s file.txt。 分页:bat --paging=always file.txt 或 bat --paging=never file.txt。 语言与主题:bat -l javascript config.txt;bat --list-languages;bat --list-themes;bat --theme="Monokai Extended" file.py。 行范围:bat -r 10:20 file.txt;bat -r 100: file.txt;bat -r :50 file.txt;bat -r 1:10 -r 50:60 file.txt。 Git 集成:bat --diff file.txt;bat --decorations=always file.txt。 输出控制:bat --style=plain file.txt;bat --style=numbers,changes file.txt;bat --style=header,grid,numbers file.txt。
常见使用场景 快速预览文件:bat file.json。 带语法高亮查看日志:bat error.log。 可视比较文件:bat --diff file1.txt;然后 bat file2.txt。 编辑前预览:bat config.yaml && vim config.yaml。 在管道中替代 cat:bat -p file.txt | grep "pattern"。 查看特定函数:bat -r 45:67 script.py(假设函数位于 45 到 67 行)。
与其他工具集成 作为 man 手册的分页器:export MANPAGER="sh -c 'col -bx | bat -l man -p'",然后 man grep。 与 ripgrep 配合:rg "pattern" -l | xargs bat。 与 fzf 配合:fzf --preview 'bat --color=always --style=numbers {}'。 与 diff 配合:diff -u file1 file2 | bat -l diff。
配置 可创建 ~/.config/bat/config 设置默认项,例如: --theme="Dracula" --style="numbers,changes,header" --italic-text=always --map-syntax "*.conf:INI" 自定义语法可添加到 ~/.config/bat/syntaxes/。
性能技巧 在管道中使用 -p 进入 plain 模式;当输出被程序使用时使用 --paging=never;bat 会缓存已解析文件以加快后续访问。
提示 可用别名 alias cat='bat -p' 作为 cat 的替代;可用 export PAGER="bat" 将其作为分页器;在 Debian/Ubuntu 上命令可能是 batcat 而不是 bat;对于超大文件,建议使用 bat --paging=never 或直接用 cat。
常用参数 -p / --plain:plain 模式(不显示行号/装饰)。 -n / --number:仅显示行号。 -A / --show-all:显示不可打印字符。 -l / --language:设置语法高亮语言。 -r / --line-range:仅显示指定行范围。
限制与暂未提供的信息 关于安装方式、支持平台、具体版本、收费或价格、运行环境要求等事实,资料中暂未提供。文档提及 GitHub 地址 https://github.com/sharkdp/bat 与 man bat 手册作为进一步参考。