关于 bat
显示文件内容时提供语法高亮支持。集成 Git 显示文件变更,支持多种输出格式和主题定制。
主要功能
- 01为 200+ 种语言和格式提供语法高亮显示
- 02显示行号并标记 Git 变更
- 03使用主题和格式选项自定义输出样式
适用场景
- 01开发过程中查看代码文件并立即获得语法上下文
- 02在命令行中查看配置或文档文件
- 03在分页器中审查 Git 跟踪的文件变更
安装
选择你的系统或包管理器,复制命令到终端运行。
安装完成后运行bat --version确认安装成功。
命令示例
常用命令按使用顺序排列。
详细介绍
主要功能 •
使用方法 •
安装 •
自定义 •
项目目标、替代方案
[English]
[中文]
[日本語]
[한국어]
[Русский]
语法高亮
bat 支持为大量编程和标记语言提供语法高亮:

Git 集成
bat 会与 git 通信,显示相对于索引的修改(见左侧边栏):

显示不可打印字符
你可以使用 -A/--show-all 选项来显示并高亮不可打印字符:

自动分页
默认情况下,如果输出内容超出一屏,bat 会将自身的输出传递给分页器(例如 less)。
如果你希望 bat 始终像 cat 一样工作(从不分页输出),可以在命令行或配置文件中设置 --paging=never 选项。
如果你打算在 shell 配置中将 cat 别名设为 bat,可以使用 alias cat='bat --paging=never' 来保留默认行为。
文件拼接
即使设置了分页器,你仍然可以用 bat 拼接文件 :wink:。
每当 bat 检测到终端处于非交互模式(即将内容管道传递给另一个进程或文件时),bat 就会作为 cat 的直接替代品运行,并改为输出纯文本文件内容,不受 --pager 选项值的影响。
使用方法
在终端中显示单个文件
bat README.md
一次显示多个文件
bat src/*.rs
从标准输入读取并自动确定语法(注意,只有能从文件第一行确定语法时才能进行高亮,
通常是通过 #!/bin/sh 这样的 shebang)
curl -s https://sh.rustup.rs | bat
从标准输入读取,并明确指定语言
yaml2json .travis.yml | json_pp | bat -l json
显示并高亮不可打印字符:
bat -A /etc/hosts
将其用作 cat 的替代品:
bat > note.md # quickly create a new file
bat header.md content.md footer.md > document.md
bat -n main.rs # show line numbers (only)
bat f - g # output 'f', then stdin, then 'g'.
与其他工具集成
fzf
你可以将 bat 用作 fzf 的预览器。为此,
使用 bat 的 --color=always 选项强制输出彩色内容。你还可以使用 --line-range
选项限制长文件的加载时间:
fzf --preview "bat --color=always --style=numbers --line-range=:500 {}"
更多信息请参阅 fzf 的 README。
find 或 fd
你可以使用 find 的 -exec 选项,通过 bat 预览所有搜索结果:
find … -exec bat {} +
如果你使用 fd,也可以使用 -X/--exec-batch 选项实现相同效果:
fd … -X bat
ripgrep
借助 batgrep,bat 可以用作 ripgrep 搜索结果的打印工具。
batgrep needle src/
tail -f
bat 可以与 tail -f 配合使用,持续监视指定文件并显示语法高亮。
tail -f /var/log/pacman.log | bat --paging=never -l log
请注意,必须关闭分页才能正常工作。我们还明确指定了语法
(-l log),因为此处无法自动检测语法。
git
你可以将 bat 与 git show 结合使用,以正确的语法高亮查看指定文件的旧版本:
git show v0.6.0:src/main.rs | bat -l rs
git diff
你可以将 bat 与 git diff 结合使用,以正确的语法高亮查看代码更改附近的行:
batdiff() {
git diff --name-only --relative --diff-filter=d -z | xargs -0 bat --diff
}
如果你更愿意将其作为独立工具使用,可以查看 bat-extras 中的 batdiff。
如果你需要更多 Git 和 diff 操作支持,可以查看 delta。
xclip
bat 输出中的行号和 Git 修改标记可能会导致文件内容难以复制。要避免这种情况,你可以使用 -p/--plain 选项调用 bat,或者直接将输出传递给 xclip:
bat main.cpp | xclip
bat 会检测到输出被重定向,并打印纯文件内容。
man
通过设置 MANPAGER 环境变量,可以将 bat 用作 man 的彩色分页器:
export MANPAGER="bat -plman"
man 2 select
(在一些较旧的 Debian 或 Ubuntu 版本中,可执行文件名为 batcat,而不是 bat)
如果你希望将其打包成一个新命令,也可以使用 batman。
请注意,Manpage 语法是在此仓库中开发的,目前仍需完善。
prettier / shfmt / rustfmt
prettybat 脚本是一个包装器,可用于格式化代码并通过 bat 打印代码。
高亮显示 --help 消息
你可以使用 bat 为帮助文本添加颜色:$ cp --help | bat -plhelp
你也可以使用一个包装器来实现:
# in your .bashrc/.zshrc/*rc
alias bathelp='bat --plain --language=help'
help() {
"$@" --help 2>&1 | bathelp
}
然后你可以运行 $ help cp 或 $ help git commit。
使用 zsh 时,你也可以使用全局别名完全覆盖 -h 和 --help:
alias -g -- -h='-h 2>&1 | bat --language=help --style=plain'
alias -g -- --help='--help 2>&1 | bat --language=help --style=plain'
对于 fish,你可以使用缩写:
abbr -a --position anywhere -- --help '--help | bat -plhelp'
abbr -a --position anywhere -- -h '-h | bat -plhelp'
这样,你可以继续使用 cp --help,但获得带颜色的帮助页面。
提示
要稍后删除这些缩写,请运行:
abbr -e -- --help abbr -e -- -h缩写名称前必须加上
--,因为--help和-h以连字符开头,否则会被abbr本身解释为标志。
请注意,在某些情况下,-h 可能不是 --help 的简写形式(例如 ls)。如果需要将 -h 用作命令参数,可以在参数前加上 \ 来转义上述定义的别名(例如 ls \-h)。
如果帮助语法存在任何问题,请在此仓库中报告。
安装
在 Ubuntu 上(使用 apt)
……以及其他基于 Debian 的 Linux 发行版。
自 Ubuntu 20.04(“Focal”)起以及 Debian 2021 年 8 月起(Debian 11 - “Bullseye”),均已提供 bat。
如果你的 Ubuntu/Debian 版本足够新,只需运行:
sudo apt install bat
重要:在一些较旧的 Ubuntu/Debian 版本中,安装的可执行文件名为 batcat,而不是 bat(因为与另一个软件包名称冲突)。在较新的版本中,可执行文件名为 bat。如果安装后运行 bat --version 无效,请尝试运行 batcat --version。你可以设置 bat -> batcat 符号链接或别名,以避免由此引发的问题,并与其他发行版保持一致:
mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat
将 batcat 设置为 bat 的别名示例:
alias bat="batcat"
在 Ubuntu 上(使用最新的 .deb 软件包)
……以及其他基于 Debian 的 Linux 发行版。
如果该软件包尚未加入你的 Ubuntu/Debian 安装源,或者你想获取最新版本的 bat,请从发布页面下载最新的 .deb 软件包并通过以下方式安装:
sudo dpkg -i bat_0.18.3_amd64.deb # adapt version number and architecture
在 Alpine Linux 上
只要启用了适当的软件仓库,你就可以从官方源安装 bat 软件包:
apk add bat
在 Arch Linux 上
你可以从官方源安装 bat 软件包:
pacman -S bat
在 Fedora 上
你可以从官方源安装 bat 软件包:
dnf install bat
在 Gentoo Linux 上
你可以从官方源安装 bat 软件包:
emerge sys-apps/bat
在 FreeBSD 上
你可以使用 pkg 安装预编译的 bat 软件包:
pkg install bat
也可以从 FreeBSD ports 自行构建:
cd /usr/ports/textproc/bat
make install
在 OpenBSD 上
你可以使用 pkg_add(1) 安装 bat 软件包:
pkg_add bat
通过 nix
你可以使用 nix 软件包管理器安装 bat:
nix-env -i bat
在 openSUSE 上
你可以使用 zypper 安装 bat:
zypper install bat
通过 snap 软件包
目前没有推荐的 snap 软件包。 可能有现存的软件包,但它们不受官方支持,且可能存在问题。
在 macOS(或 Linux)上通过 Homebrew 安装
你可以使用 Homebrew 安装 bat:
brew install bat
在 macOS 上通过 MacPorts 安装
或者使用 MacPorts 安装 bat:
port install bat
在 Windows 上
在 Windows 上安装 bat 有几种方式。安装好 bat 后,
请查看“在 Windows 上使用 bat”一节。
先决条件
你需要安装 Visual C++ Redistributable
使用 WinGet
你可以通过 WinGet 安装 bat:
winget install sharkdp.bat
使用 Chocolatey
你可以通过 Chocolatey 安装 bat:
choco install bat
使用 Scoop
你可以通过 scoop 安装 bat:
scoop install bat
使用预编译二进制文件:
你可以从发布页面下载预编译二进制文件,
你需要安装 Visual C++ Redistributable 软件包。
使用二进制文件
请查看发布页面,获取适用于多种不同架构的 bat 预编译版本。也提供静态链接的二进制文件:请查找文件名中带有 musl 的压缩包。
从源代码构建
如果要从源代码构建 bat,你需要 Rust 1.79.0 或更高版本。之后可以使用 cargo 构建全部内容:
从本地源代码构建
cargo install --path . --locked
说明
上面的
--path .指定的是源代码目录,而不是bat的安装位置。 更多信息请参阅cargo install文档。
从 crates.io 安装
cargo install --locked bat
请注意,这两种方式都无法自动安装手册页或 shell 补全文件等附加文件。
如果从本地源代码安装,这些文件将由 cargo 生成,并应位于 cargo target 文件夹下的 build 目录中。
此外,也可以通过运行以下命令获取 shell 补全文件:
bat --completion <shell>
# see --help for supported shells
自定义
高亮主题
使用 bat --list-themes 获取所有可用语法高亮主题的列表。默认情况下,bat 在深色和浅色主题下分别使用 Monokai Extended 和 Monokai Extended Light。若要选择 TwoDark 主题,请使用 --theme=TwoDark 选项调用 bat,或将环境变量 BAT_THEME 设置为 TwoDark。在 shell 的启动文件中使用 export BAT_THEME="TwoDark",即可永久应用此更改。或者,也可以使用 bat 的
配置文件。
若想在自定义文件上预览不同的主题,可以使用以下命令(需要 fzf):
bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"
bat 会根据终端的背景颜色自动选择合适的主题。你可以使用 --theme-dark / --theme-light 选项或 BAT_THEME_DARK / BAT_THEME_LIGHT 环境变量,自定义所用主题。这在你经常切换深色和浅色模式时尤其有用。
你也可以按照下文 “添加新主题”一节使用自定义主题。
8 位主题
bat 有三个始终使用8 位颜色的主题,即使终端支持真彩色也是如此:
ansi在任何终端上都能呈现不错的效果。它使用 3 位颜色:黑、红、绿、黄、蓝、品红、青和白。base16专为 base16 终端主题设计。它按照 base16 样式指南,使用 4 位颜色(3 位颜色加上亮色变体)。base16-256专为 tinted-shell 设计。它将某些亮色替换为 16 至 21 的 8 位颜色。不要仅仅因为你使用的是 256 色终端就选用此主题,而你并未使用 tinted-shell。
尽管这些主题的限制更多,但与真彩色主题相比,它们有三个优点:
- 兼容性最高。有些终端工具不支持超过 3 位的颜色。
- 能适应终端主题的变化,即使输出已经打印出来也是如此。
- 与其他终端软件在视觉上更协调。
输出样式
你可以使用 --style 选项控制 bat 输出的外观。
例如,你可以使用 --style=numbers,changes,只显示 Git 更改和
行号,不显示网格和文件标题。设置 BAT_STYLE 环境
变量可永久应用这些更改,也可以使用 bat 的
配置文件。
默认情况下,bat 会启用 changes、grid、header-filename、numbers 和 snip。
可用的预定义样式如下:
| 样式 | 描述 |
|---|---|
default | 启用上文列出的推荐样式组件。 |
full | 启用所有可用组件。 |
auto | 与 default 相同,但输出被管道传输时除外。 |
plain | 禁用所有可用组件。 |
可用的单项组件如下:
| 组件 | 描述 |
|---|---|
changes | 显示 Git 修改标记。 |
header | header-filename 的别名。 |
header-filename | 在内容前显示文件名。 |
header-filesize | 在内容前显示文件大小。 |
grid | 使用垂直线和水平线分隔侧边栏、标题和内容。 |
rule | 使用水平线分隔文件。 |
numbers | 在侧边栏显示行号。 |
snip | 在不同的行范围之间绘制分隔线。 |
提示
如果你在
bat的配置文件中指定了默认样式,可以在单次运行bat时使用--style命令行参数 更改要显示的组件。通过在组件前加上+或-,可以将其添加到当前样式中,或从当前样式中移除。例如,如果你的配置中包含
--style=full,-snip,可以运行 bat 时使用--style=-grid,+snip来移除网格并重新添加snip组件。 或者,如果你想完全覆盖样式,可以使用--style=numbers, 只显示行号。
装饰
默认情况下,bat 只在向交互式终端输出时显示装饰(例如行号、文件标题、网格边框等)。你可以使用 --decorations 选项控制此行为。使用 --decorations=always 可在将输出通过管道传输到其他命令时仍显示装饰;使用 --decorations=never 则可完全禁用装饰。可选值为 auto(默认值)、never 和 always。
此外还有 --force-colorization 选项,它是 --decorations=always --color=always 的别名。如果你希望在将 bat 的输出通过管道传输到其他程序时保留颜色和装饰,此选项会很有用。
添加新的语法/语言定义
如果发现 bat 中没有提供某种语法,可以按照以下说明轻松地为当前的 bat 安装添加新语法。
bat 使用出色的 syntect
库进行语法高亮。syntect 可以读取任何
Sublime Text .sublime-syntax 文件
和主题。
查找 Sublime Syntax 软件包的好资源是 Package Control。找到语法后:
-
创建一个包含语法定义文件的文件夹:
mkdir -p "$(bat --config-dir)/syntaxes" cd "$(bat --config-dir)/syntaxes" # Put new '.sublime-syntax' language definition files # in this folder (or its subdirectories), for example: git clone https://github.com/tellnobody1/sublime-purescript-syntax -
然后使用以下命令将这些文件解析为二进制缓存:
bat cache --build -
最后,使用
bat --list-languages检查新语言是否可用。如果你想恢复默认设置,请执行:
bat cache --clear
添加新主题
这与添加新的语法定义非常相似。
说明
自定义主题必须存储在
.tmTheme文件中。 目前不支持较新的.sublime-color-scheme文件。
首先,创建一个存放新语法高亮主题的文件夹:
mkdir -p "$(bat --config-dir)/themes"
cd "$(bat --config-dir)/themes"
# Download a theme in '.tmTheme' format, for example:
git clone https://github.com/greggb/sublime-snazzy
# Update the binary cache
bat cache --build
最后,使用 bat --list-themes 检查新主题是否可用。
说明
bat使用.tmTheme文件的名称作为主题名称。
添加或更改文件类型关联
你可以使用 --map-syntax 命令行选项添加新的(或更改现有的)文件名模式。该选项接受 pattern:syntax 形式的参数,其中
pattern 是一个 glob 模式,用于匹配文件名和绝对文件路径。syntax 部分是受支持语言的完整名称
(使用 bat --list-languages 查看概览)。
注意: 如果想让设置持久生效,通常应将此选项作为一项配置写入 bat 的配置文件,而不是仅在命令行中临时传入。一般来说,如果只想手动指定文件的语言,使用 -l 即可。
示例:要对所有扩展名为 .conf 的文件使用 “INI” 语法高亮,请使用
--map-syntax='*.conf:INI'
示例:要使用 “Git Ignore” 语法打开所有名为 .ignore 的文件(精确匹配),请使用:
--map-syntax='.ignore:Git Ignore'
示例:要使用 “Apache Conf” 语法打开 /etc/apache2 子文件夹中的所有 .conf 文件,请使用(此映射已内置):
--map-syntax='/etc/apache2/**/*.conf:Apache Conf'
使用其他分页器
bat 使用 PAGER 环境变量指定的分页器。如果未设置此变量,默认使用 less。你也可以使用 bat 内置的分页器,方法是设置 --pager=builtin,或将 BAT_PAGER 环境变量设为 "builtin"。
如果想使用其他分页器,可以修改 PAGER 变量,或设置 BAT_PAGER 环境变量,以覆盖 PAGER 中指定的设置。
说明
如果
PAGER为more或most,bat将静默改用less,以确保支持颜色。
如果想向分页器传递命令行参数,也可以通过 PAGER/BAT_PAGER 变量设置:
export BAT_PAGER="less -RFK"
除了使用环境变量,你也可以通过 bat 的配置文件配置分页器(--pager 选项)。
使用 less 作为分页器
使用 less 作为分页器时,bat 会自动向 less 传递额外选项,以改善使用体验。具体而言,会传递 -R/--RAW-CONTROL-CHARS、-F/--quit-if-one-screen、-K/--quit-on-intr,并在某些情况下传递 -X/--no-init 和/或 -S/--chop-long-lines。
重要
以下情况不会添加这些选项:
- 分页器的名称不是
less。--pager参数包含任何命令行参数(例如--pager="less -R")。BAT_PAGER环境变量包含任何命令行参数(例如export BAT_PAGER="less -R")以下情况不会添加
--quit-if-one-screen选项:
- 使用了
--paging=always参数。BAT_PAGING环境变量被设为always。
正确解析 ANSI 颜色需要使用 -R/--RAW-CONTROL-CHARS 选项。
-F/--quit-if-one-screen 选项会让 less 在输出大小小于终端垂直尺寸时立即退出。对于小文件,这很方便,因为你无需按 q 退出分页器。
-K/--quit-on-intr 选项会让 less 在收到中断信号时立即退出。这可以确保 less 与 bat 一起在收到 SIGINT 时退出。
对于低于 530 版的 less(Windows 上低于 558 版),会添加 -X/--no-init 选项,以修复 -F/--quit-if-one-screen 功能中的一个错误。不过,这也会导致 less 的鼠标滚轮支持失效。如果你想在较旧版本的 less 中启用鼠标滚轮滚动,并且不介意失去“单屏时退出”功能,可以将分页器(通过 --pager 或 BAT_PAGER)设为 less -R。对于 530 版或更新版本的 less,该功能应该开箱即用。
使用 bat 的 -S/--chop-long-lines 选项时,会添加 -S/--chop-long-lines 选项。这会让 less 截断所有超过终端宽度的行。
缩进
bat 会自行将制表符扩展为 4 个空格,不依赖分页器。要更改此设置,只需添加 --tabs 参数,并指定要显示的空格数。
注意:为分页器设置制表符宽度(通过 bat 的 --pager 参数,或通过 less 的 LESS 环境变量)不会生效,因为分页器接收到的已经是扩展后的空格,而不是制表符。添加此行为是为了避免侧边栏导致的缩进问题。使用 --tabs=0 调用 bat 可以覆盖此设置,让分页器处理制表符。
深色模式
如果你在 macOS 中使用深色模式功能,可能会想配置 bat,让它根据操作系统主题使用不同的主题。以下代码片段会在_深色模式_下使用 default 主题,在_浅色模式_下使用 GitHub 主题。
alias cat="bat --theme auto:system --theme-dark default --theme-light GitHub"
同一深色模式功能现已在 GNOME 中提供,并会影响 org.gnome.desktop.interface color-scheme 设置。以下代码将上面的示例改为使用该设置。
# .bashrc
sys_color_scheme_is_dark() {
condition=$(gsettings get org.gnome.desktop.interface color-scheme)
condition=$(echo "$condition" | tr -d "[:space:]'")
if [ $condition == "prefer-dark" ]; then
return 0
else
return 1
fi
}
bat_alias_wrapper() {
#get color scheme
sys_color_scheme_is_dark
if [[ $? -eq 0 ]]; then
# bat command with dark color scheme
bat --theme=default "$@"
else
# bat command with light color scheme
bat --theme=GitHub "$@"
fi
}
alias cat='bat_alias_wrapper'
配置文件
也可以通过配置文件自定义 bat。配置文件的位置取决于你的操作系统。要获取系统的默认路径,请运行
bat --config-file
或者,你可以使用 BAT_CONFIG_PATH 或 BAT_CONFIG_DIR 环境变量,分别将 bat 指向非默认位置的配置文件或配置目录:
export BAT_CONFIG_PATH="/path/to/bat/bat.conf"
export BAT_CONFIG_DIR="/path/to/bat"
可以使用 --generate-config-file 选项创建默认配置文件。
bat --generate-config-file
现在还支持系统范围的配置文件:在 Linux 和 Mac OS 上,其位置为 /etc/bat/config;在 windows 上,其位置为 C:\ProgramData\bat\config。如果存在系统范围的配置文件,用户配置文件的内容会直接追加到其中。
格式
配置文件是一个简单的命令行参数列表。运行 bat --help 可查看所有可能的选项和值。此外,你可以在行首添加 # 字符来添加注释。
配置文件示例:
# Set the theme to "TwoDark"
--theme="TwoDark"
# Show line numbers, Git modifications and file header (but no grid)
--style="numbers,changes,header"
# Use italic text on the terminal (not supported on all terminals)
--italic-text=always
# Use C++ syntax for Arduino .ino files
--map-syntax "*.ino:C++"
在 Windows 上使用 bat
bat 在 Windows 上基本可以开箱即用,但某些功能可能需要额外配置。
先决条件
你需要安装 Visual C++ Redistributable 软件包。
分页
Windows 仅提供功能非常有限的分页器 more。你可以从 less 的主页或通过 Chocolatey下载 Windows 二进制文件。要使用它,请将二进制文件放入 PATH 中的某个目录,或定义环境变量。“Chocolatey 软件包”会自动安装 less。
颜色
从 v1511 开始,Windows 10 原生支持在 conhost.exe(命令提示符)和 PowerShell 中显示颜色,也支持较新版本的 bash。在较早版本的 Windows 上,你可以使用包含 ConEmu 的 Cmder。
**注意:**旧版本的 less 无法在 Windows 上正确解析颜色。要解决此问题,安装 Git 时可以将可选的 Unix 工具添加到 PATH。如果你没有安装其他分页器,可以通过传入 --paging=never 或将 BAT_PAGER 设为空字符串来完全禁用分页。
Cygwin
Windows 上的 bat 原生不支持 Cygwin 的 Unix 风格路径(/cygdrive/*)。传入绝对 Cygwin 路径作为参数时,bat 会报错:The system cannot find the path specified. (os error 3)
你可以创建一个包装器,或将以下函数添加到 .bash_profile 文件中来解决此问题:
bat() {
local index
local args=("$@")
for index in $(seq 0 ${#args[@]}) ; do
case "${args[index]}" in
-*) continue;;
*) [ -e "${args[index]}" ] && args[index]="$(cygpath --windows "${args[index]}")";;
esac
done
command bat "${args[@]}"
}
故障排除
输出乱码
如果输入文件包含颜色代码、其他 ANSI 转义序列或控制字符,bat 在执行语法高亮和文本换行时会遇到问题,因此输出可能会出现乱码。
如果你的 bat 版本支持 --strip-ansi=auto 选项,可以用它在语法高亮前移除此类序列。或者,你可以向 bat 传入 --color=never --wrap=never 选项,同时禁用语法高亮和换行。
对于不可信输入,--sanitize=auto|always|never 选项还会将可激活终端的控制字节以及 Unicode 双向/零宽格式字符替换为 Unicode 替换字符。该选项会以相同的值启用 --strip-ansi。
说明
--strip-ansi的auto选项不会移除纯文本中的转义序列。
终端与颜色
bat 支持有真彩色支持和无真彩色支持的终端。不过,大多数语法高亮主题的颜色并未针对 8 位颜色进行优化。因此,强烈建议使用支持 24 位真彩色的终端(terminator、konsole、iTerm2 等),或者使用专为有限颜色集设计的基础 8 位主题。有关详情以及支持真彩色的终端完整列表,请参阅这篇文章。
确保你的真彩色终端将 COLORTERM 变量设为 truecolor 或 24bit。否则,bat 将无法确定是否支持 24 位转义序列(并会退回到 8 位颜色)。
行号和网格几乎看不清
请尝试其他主题(运行 bat --list-themes 查看主题列表)。OneHalfDark 和 OneHalfLight 主题的网格和行号颜色更亮。
文件编码
bat 原生支持 UTF-8 和 UTF-16。对于其他所有文件编码,你可能需要先转换为 UTF-8,因为通常无法自动检测这些编码。你可以使用 iconv
进行转换。
例如,如果你有一个采用 Latin-1(ISO-8859-1)编码的 PHP 文件,可以这样调用:
iconv -f ISO-8859-1 -t UTF-8 my-file.php | bat
注意:如果 bat 无法自动检测语法,你可能需要使用 -l/--language 选项。
开发
# Recursive clone to retrieve all submodules
git clone --recursive https://github.com/sharkdp/bat
# Build (debug version)
cd bat
cargo build --bins
# Run unit tests and integration tests
cargo test
# Install (release version)
cargo install --path . --locked
# Build a bat binary with modified syntaxes and themes
bash assets/create.sh
cargo install --path . --locked --force
如果你想构建一个使用 bat 美化打印功能的应用程序库,请参阅 API 文档。
请注意,将 bat 作为库依赖时,必须启用 regex-onig 或 regex-fancy 特性。
贡献
请查看 CONTRIBUTING.md 指南。
维护者
安全漏洞
请参阅 SECURITY.md。
项目目标和替代方案
bat 致力于实现以下目标:
- 提供美观、先进的语法高亮
- 与 Git 集成,以显示文件修改
- 成为 (POSIX)
cat的直接替代品 - 提供易于使用的命令行界面
如果你在寻找类似程序,还有许多替代方案。有关对比,请参阅 此文档。
许可证
Copyright (c) 2018-2025 bat-developers。
bat 根据 MIT License 或 Apache License 2.0 的条款提供,你可以任选其一。
有关许可证详情,请参阅 LICENSE-APACHE 和 LICENSE-MIT 文件。