特别感谢我们最大的赞助商:
您的应用程序,企业就绪。
只需几行代码即可开始向企业客户销售。
只需几分钟而不是几个月即可添加单点登录(甚至更多)。
Warp,智能终端
像高级用户一样使用 AI 和您的开发团队运行命令
知识尽在一个快速、直观的终端中。适用于 MacOS 或 Linux。
bat
支持大量编程和标记语言的语法突出显示:
bat
与git
通信以显示对索引的修改(请参见左侧栏):
您可以使用-A
/ --show-all
选项来显示和突出显示不可打印的字符:
默认情况下,如果输出对于一个屏幕来说太大,则bat
将其自己的输出传送到寻呼机(例如less
)。如果您希望bat
始终像cat
一样工作(从不分页输出),您可以在命令行或配置文件中设置--paging=never
作为选项。如果您打算在 shell 配置中将cat
别名为bat
,则可以使用alias cat='bat --paging=never'
来保留默认行为。
即使设置了寻呼机,您仍然可以使用bat
来连接文件。每当bat
检测到非交互式终端时(即,当您通过管道进入另一个进程或文件时), bat
将充当cat
的直接替代品并回退到打印纯文件内容,无论--pager
选项如何价值。
在终端上显示单个文件
>bat README.md
一次显示多个文件
> 蝙蝠 src/*.rs
从 stdin 读取,自动确定语法(注意,仅当可以从文件的第一行确定语法时,突出显示才会起作用,通常通过诸如#!/bin/sh
之类的 shebang )
> 卷曲 -s https://sh.rustup.rs |蝙蝠
从 stdin 读取,明确指定语言
> yaml2json .travis.yml | json_pp |蝙蝠 -l json
显示并突出显示不可打印的字符:
> bat -A /etc/hosts
用它作为cat
替代品:
bat > note.md # 快速新建文件bat header.md content.md footer.md > document.md bat -n main.rs # (仅)显示行号 bat f - g # 输出 'f',然后是 stdin,然后是 'g'。
fzf
您可以使用bat
作为fzf
的预览器。为此,请使用bat
s --color=always
选项强制彩色输出。您还可以使用--line-range
选项来限制长文件的加载时间:
fzf --preview“bat --color=always --style=numbers --line-range=:500 {}”
有关更多信息,请参阅fzf
的README
。
find
或fd
您可以使用find
的-exec
选项通过bat
预览所有搜索结果:
找到...-exec bat {} +
如果您碰巧使用fd
,则可以使用-X
/ --exec-batch
选项执行相同操作:
fd … -X 蝙蝠
ripgrep
通过batgrep
, bat
可以用作ripgrep
搜索结果的打印机。
batgrep 针 src/
tail -f
bat
可以与tail -f
结合使用,通过语法突出显示持续监视给定文件。
尾-f /var/log/pacman.log | bat --paging=从不 -l 日志
请注意,我们必须关闭分页才能使其正常工作。我们还显式指定了语法( -l log
),因为在这种情况下无法自动检测到它。
git
您可以将bat
与git show
结合使用,以使用正确的语法突出显示来查看给定文件的旧版本:
git show v0.6.0:src/main.rs | git show v0.6.0:src/main.rs |蝙蝠-l rs
git diff
您可以将bat
与git diff
结合起来,通过适当的语法突出显示来查看代码更改周围的行:
蝙蝠差(){ git diff --name-only --relative --diff-filter=d | git diff --name-only --relative --diff-filter=d | xargs 蝙蝠 --diff }
如果您更喜欢将其用作单独的工具,请查看bat-extras
中的batdiff
。
如果您正在寻找对 git 和 diff 操作的更多支持,请查看delta
。
xclip
bat
输出中的行号和 Git 修改标记可能会使复制文件内容变得困难。为了防止这种情况,您可以使用-p
/ --plain
选项调用bat
或简单地将输出传输到xclip
:
蝙蝠主.cpp |剪辑
bat
将检测输出是否被重定向并打印纯文件内容。
man
通过设置MANPAGER
环境变量, bat
可以用作man
的着色分页器:
导出 MANPAGER =“sh -c 'col -bx | bat -l man -p'”man 2 选择
(如果您使用的是 Debian 或 Ubuntu,请将bat
替换为batcat
)
如果遇到格式问题,可能还需要设置MANROFFOPT="-c"
。
如果您希望将其捆绑在新命令中,您也可以使用batman
。
请注意,手册页语法是在此存储库中开发的,仍然需要一些工作。
另请注意,这不适用于 Mandocs man
实现。
prettier
/ shfmt
/ rustfmt
prettybat
脚本是一个包装器,它将格式化代码并使用bat
打印它。
--help
消息您可以使用bat
为帮助文本着色: $ cp --help | bat -plhelp
您还可以使用包装器来解决此问题:
# 在你的 .bashrc/.zshrc/*rcalias 中 bathelp='bat --plain --language=help'help() {"$@" --help 2>&1 |蝙蝠帮助 }
然后你可以执行$ help cp
或$ help git commit
。
当您使用zsh
时,您还可以使用全局别名来完全覆盖-h
和--help
:
别名 -g -- -h='-h 2>&1 | bat --language=help --style=plain'alias -g -- --help='--help 2>&1 |蝙蝠--语言=帮助--风格=普通'
这样,您可以继续使用cp --help
,但获得彩色帮助页面。
请注意,在某些情况下, -h
可能不是--help
的简写(例如使用ls
)。
请报告此存储库中帮助语法的任何问题。
apt
)...以及其他基于 Debian 的 Linux 发行版。
bat
自 20.04(“Focal”)起在 Ubuntu 上可用,自 2021 年 8 月起在 Debian 上可用(Debian 11 - “Bullseye”)。
如果您的 Ubuntu/Debian 安装足够新,您只需运行:
sudo apt安装bat
重要提示:如果您以这种方式安装bat
,请注意,可执行文件可能会安装为batcat
而不是bat
(由于与另一个包的名称冲突)。您可以设置bat -> batcat
符号链接或别名,以防止因此可能出现的任何问题,并与其他发行版保持一致:
mkdir -p ~/.local/bin ln -s /usr/bin/batcat ~/.local/bin/bat
.deb
软件包)...以及其他基于 Debian 的 Linux 发行版。
如果该软件包尚未升级到您的 Ubuntu/Debian 安装,或者您想要最新版本的bat
,请从发布页面下载最新的.deb
软件包并通过以下方式安装:
sudo dpkg -i bat_0.18.3_amd64.deb # 调整版本号和架构
您可以从官方来源安装bat
软件包,前提是您启用了适当的存储库:
apk添加bat
您可以从官方来源安装bat
包:
吃豆人-S 蝙蝠
您可以从官方 Fedora Modular 存储库安装bat
软件包。
dnf安装bat
您可以从 dev-kit 安装bat
包。
出现系统应用程序/bat
您可以从官方来源安装bat
包:
出现系统应用程序/bat
您可以通过 xbps-install 安装bat
:
xbps-安装-S bat
您可以通过 pkg 安装bat
:
pkg安装bat
您可以使用 pkg 安装预编译的bat
包:
pkg安装bat
或者从 FreeBSD ports 自己构建它:
cd /usr/ports/textproc/bat 进行安装
您可以使用pkg_add(1)
安装bat
包:
pkg_add 蝙蝠
您可以使用 nix 包管理器安装bat
:
nix-env -i 蝙蝠
您可以使用 Flox 安装bat
flox安装bat
您可以使用 zypper 安装bat
:
zypper 安装蝙蝠
目前没有推荐的 snap 包可用。现有的软件包可能可用,但不受官方支持,并且可能存在问题。
您可以使用 Homebrew 安装bat
:
酿造安装蝙蝠
或者使用MacPorts安装bat
:
端口安装bat
在 Windows 上安装bat
有几个选项。安装bat
后,请查看“在 Windows 上使用bat
”部分。
您需要安装 Visual C++ Redistributable 软件包。
您可以通过 WinGet 安装bat
:
winget安装sharkdp.bat
您可以通过 Chocolatey 安装bat
:
choco安装bat
您可以通过 scoop 安装bat
:
舀安装蝙蝠
您可以从发布页面下载预构建的二进制文件,
您需要安装 Visual C++ Redistributable 软件包。
查看发布页面,了解适用于许多不同体系结构的bat
预构建版本。静态链接的二进制文件也可用:查找文件名中带有musl
的档案。
如果您想从源代码构建bat
,则需要 Rust 1.70.0 或更高版本。然后你可以使用cargo
来构建一切:
货物安装--锁定蝙蝠
请注意,无法以这种方式安装其他文件,例如手册页或 shell 完成文件。它们将由cargo
生成,并且应该在Cargo目标文件夹中可用(在build
下)。
使用bat --list-themes
获取所有可用主题的列表以进行语法突出显示。要选择TwoDark
主题,请使用--theme=TwoDark
选项调用bat
或将BAT_THEME
环境变量设置为TwoDark
。在 shell 的启动文件中使用export BAT_THEME="TwoDark"
以使更改永久生效。或者,使用bat
的配置文件。
如果您想预览自定义文件上的不同主题,可以使用以下命令(为此需要fzf
):
蝙蝠--列表主题| fzf --preview="bat --theme={} --color=always /path/to/file"
bat
根据终端的背景颜色自动选择合适的主题。您可以使用--theme-light
/ --theme-light
选项或BAT_THEME_DARK
/ BAT_THEME_LIGHT
环境变量来自定义所使用的主题。如果您经常在深色和浅色模式之间切换,这尤其有用。
您还可以按照下面的“添加新主题”部分来使用自定义主题。
bat
具有三个始终使用 8 位颜色的主题,即使真彩色支持可用:
ansi
在任何终端上看起来都不错。它使用 3 位颜色:黑色、红色、绿色、黄色、蓝色、品红色、青色和白色。
base16
专为 Base16 终端主题而设计。它根据 base16 样式指南使用 4 位颜色(3 位颜色加上明亮的变体)。
base16-256
是为 base16-shell 设计的。它用 16 到 21 的 8 位颜色替换某些明亮的颜色。不要仅仅因为您有 256 色终端但没有使用 base16-shell 就使用它。
尽管这些主题受到更多限制,但它们比真彩色主题具有三个优势。他们:
享受最大的兼容性。某些终端实用程序不支持超过 3 位颜色。
适应终端主题变化。即使对于已经打印的输出也是如此。
在视觉上与其他终端软件更好地协调。
您可以使用--style
选项来控制bat
输出的外观。例如,您可以使用--style=numbers,changes
来仅显示 Git 更改和行号,但不显示网格和文件头。设置BAT_STYLE
环境变量以使这些更改永久生效或使用bat
的配置文件。
提示
如果您在bat
的配置文件中指定默认样式,则可以使用--style
命令行参数更改单次运行bat
期间显示的组件。通过在组件前面加上+
或-
前缀,可以将其添加到当前样式中或从当前样式中删除。
例如,如果您的配置包含--style=full,-snip
,则可以使用--style=-grid,+snip
运行 bat 来删除网格并重新添加snip
组件。或者,如果您想完全覆盖样式,可以使用--style=numbers
来仅显示行号。
如果您发现bat
中不提供特定语法,您可以按照这些说明轻松地将新语法添加到当前的bat
安装中。
bat
使用优秀的syntect
库进行语法高亮。 syntect
可以读取任何 Sublime Text .sublime-syntax
文件和主题。
Package Control 是查找 Sublime Syntax 包的一个很好的资源。一旦找到语法:
创建一个包含语法定义文件的文件夹:
mkdir -p "$(bat --config-dir)/syntaxes"cd "$(bat --config-dir)/syntaxes"# 将新的 '.sublime-syntax' 语言定义文件# 放入此文件夹(或其子目录) ),例如:git clone https://github.com/tellnobody1/sublime-purescript-syntax
现在使用以下命令将这些文件解析到二进制缓存中:
蝙蝠缓存--构建
最后,使用bat --list-languages
检查新语言是否可用。
如果您想返回默认设置,请致电:
蝙蝠缓存--清除
如果您认为默认情况下应在bat
中包含特定语法,请在阅读此处的政策和说明后考虑打开“语法请求”票证:打开语法请求。
这与我们添加新语法定义的方式非常相似。
首先,使用新语法突出显示主题创建一个文件夹:
mkdir -p "$(bat --config-dir)/themes"cd "$(bat --config-dir)/themes"# 下载 '.tmTheme' 格式的主题,例如:git clone https:// github.com/greggb/sublime-snazzy# 更新二进制缓存bat 缓存 --build
最后,使用bat --list-themes
检查新主题是否可用。
您可以使用--map-syntax
命令行选项添加新的(或更改现有的)文件名模式。该选项采用pattern:syntax
形式的参数,其中pattern
是与文件名和绝对文件路径匹配的全局模式。 syntax
部分是受支持语言的全名(使用bat --list-languages
进行概述)。
注意:您可能希望将此选项用作bat
配置文件中的条目以实现持久性,而不是一次性将其传递到命令行。通常,如果您想手动指定文件的语言,只需使用-l
即可。
示例:要对所有具有.conf
文件扩展名的文件使用“INI”语法突出显示,请使用
--map-syntax='*.conf:INI'
示例:要使用“Git Ignore”语法打开所有名为.ignore
(完全匹配)的文件,请使用:
--map-syntax='.ignore:Git 忽略'
示例:要使用“Apache Conf”语法打开/etc/apache2
子文件夹中的所有.conf
文件,请使用(此映射已内置):
--map-syntax='/etc/apache2/**/*.conf:Apache Conf'
bat
使用PAGER
环境变量中指定的分页程序。如果未设置此变量,则默认使用less
。如果要使用不同的寻呼机,可以修改PAGER
变量或设置BAT_PAGER
环境变量以覆盖PAGER
中指定的内容。
笔记
如果PAGER
是more
或most
, bat
会默默地使用less
来代替以确保对颜色的支持。
如果要将命令行参数传递给寻呼机,还可以通过PAGER
/ BAT_PAGER
变量设置它们:
导出 BAT_PAGER="少-RF"
除了使用环境变量之外,您还可以使用bat
的配置文件来配置寻呼机( --pager
选项)。
less
作为寻呼机当使用less
作为寻呼机时, bat
会自动将额外的选项传递给less
以改善体验。具体来说, -R
/ --RAW-CONTROL-CHARS
、 -F
/ --quit-if-one-screen
,并且在某些条件下, -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
。
需要-R
选项才能正确解释 ANSI 颜色。
如果输出大小小于终端的垂直大小, -F
选项指示less
立即退出。这对于小文件来说很方便,因为您不必按q
退出寻呼机。
需要-X
选项来修复less
版本 530 的版本中的--quit-if-one-screen
功能的错误。不幸的是,它也破坏了less
中的鼠标滚轮支持。如果您想在旧版本的less
上启用鼠标滚轮滚动并且不介意失去“if-one-screen”功能,则可以将寻呼机(通过--pager
或BAT_PAGER
)设置为less -R
。对于 530 less
或更高版本,它应该可以开箱即用。
当使用bat
的-S
/ --chop-long-lines
选项时,会添加-S
选项。这告诉less
截断任何大于终端宽度的行。
bat
自行将制表符扩展为 4 个空格,而不依赖于寻呼机。要更改此设置,只需添加--tabs
参数以及要显示的空格数。
注意:不会考虑为寻呼机定义制表位(通过bat
的--pager
参数,或通过less
的LESS
环境变量),因为寻呼机已经获得扩展的空格而不是制表符。添加此行为是为了避免侧边栏引起的缩进问题。使用--tabs=0
调用bat
将覆盖它并让分页器使用选项卡。
如果您在 macOS 中使用深色模式功能,您可能需要将bat
配置为根据操作系统主题使用不同的主题。以下代码片段在深色模式下使用default
主题,在浅色模式下使用GitHub
主题。
别名 cat="bat --theme=$(默认读取 -globalDomain AppleInterfaceStyle &> /dev/null && echo 默认 || echo GitHub)"
还可以使用配置文件自定义bat
。该文件的位置取决于您的操作系统。要获取系统的默认路径,请调用
bat --配置文件
或者,您可以使用BAT_CONFIG_PATH
或BAT_CONFIG_DIR
环境变量分别将bat
指向配置文件或配置目录的非默认位置:
导出 BAT_CONFIG_PATH="/path/to/bat/bat.conf"导出 BAT_CONFIG_DIR="/path/to/bat"
可以使用--generate-config-file
选项创建默认配置文件。
bat --生成配置文件
现在还有一个系统范围的配置文件,在 Linux 和 Mac OS 上位于/etc/bat/config
下,在 Windows 上位于C:ProgramDatabatconfig
下。如果存在系统范围的配置文件,则用户配置的内容将简单地附加到其中。
配置文件是命令行参数的简单列表。使用bat --help
查看可能的选项和值的完整列表。此外,您可以通过在行前面添加#
字符来添加注释。
配置文件示例:
# 将主题设置为“TwoDark”--theme="TwoDark"# 显示行号、Git 修改和文件头(但没有网格)--style="numbers,changes,header"# 在终端上使用斜体文本(不是所有终端均支持)--italic-text=always# 对 Arduino .ino 文件使用 C++ 语法--map-syntax "*.ino:C++"
bat
bat
大多数情况下可以在 Windows 上开箱即用,但一些功能可能需要额外配置。
您需要安装 Visual C++ Redistributable 软件包。
Windows 仅包含非常有限的more
形式的寻呼机。您可以从其主页或通过 Chocolatey 以less
下载 Windows 二进制文件。要使用它,请将二进制文件放置在PATH
中的目录中或定义一个环境变量。 Chocolatey 软件包的自动安装程度less
。
自 v1511 起,Windows 10 原生支持conhost.exe
(命令提示符)和 PowerShell 以及较新版本的 bash 中的颜色。在早期版本的 Windows 上,您可以使用 Cmder,其中包括 ConEmu。
注意:旧版本的less
无法正确解释 Windows 上的颜色。要解决此问题,您可以在安装 Git 时将可选的 Unix 工具添加到您的 PATH 中。如果您没有安装任何其他寻呼机,则可以通过传递--paging=never
或将BAT_PAGER
设置为空字符串来完全禁用分页。
Windows 上的bat
本身不支持 Cygwin 的 unix 样式路径 ( /cygdrive/*
)。当传递绝对 cygwin 路径作为参数时, bat
将遇到以下错误: The system cannot find the path specified. (os error 3)
这可以通过创建包装器或将以下函数添加到.bash_profile
文件中来解决:
bat() {本地索引local args=("$@")for $(seq 0 ${#args[@]}) 中的索引; docase "${args[index]}" in-*) continue;;*) [ -e "${args[index]}" ] && args[index]="$(cygpath --windows "${args[索引]}")";;esacdonecommand bat "${args[@]}"}
如果输入文件包含颜色代码或其他 ANSI 转义序列或控制字符, bat
在执行语法突出显示和文本换行时将出现问题,因此输出可能会出现乱码。
如果您的bat
版本支持--strip-ansi=auto
选项,则可以使用它在语法突出显示之前删除此类序列。或者,您可以通过将--color=never --wrap=never
选项传递给bat
来禁用语法突出显示和换行。
笔记
--strip-ansi
的auto
选项可以避免在语法为纯文本时删除转义序列。
bat
处理带或不带真彩色支持的终端。但是,大多数语法突出显示主题中的颜色并未针对 8 位颜色进行优化。因此,强烈建议您使用支持 24 位真彩色的终端( terminator
、 konsole
、 iTerm2
等),或使用专为有限颜色集设计的基本 8 位主题之一。请参阅本文了解更多详细信息以及支持真彩色的终端的完整列表。
确保您的 truecolor 终端将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 | iconv -f ISO-8859-1 -t UTF-8 my-file.php |蝙蝠
注意:如果bat
无法自动检测语法,您可能必须使用-l
/ --language
选项。
# 递归克隆检索所有子模块git clone --recursive https://github.com/sharkdp/bat# Build (debug version)cd bat cargo build --bins# 运行单元测试和集成测试cargo test# 安装(发布版本)cargo install --path 。 --locked# 使用修改后的语法和主题构建 bat 二进制文件bash asset/create.sh 货物安装--路径。 --锁定--强制
如果您想构建一个使用bat
的漂亮打印功能作为库的应用程序,请查看 API 文档。请注意,当您依赖bat
作为库时,必须使用regex-onig
或regex-fancy
作为功能。
查看CONTRIBUTING.md
指南。
鲨鱼dp
eth-p
基思·霍尔
恩塞利克
如果您想报告bat
中的漏洞,请通过电子邮件联系 David Peter。
bat
试图实现以下目标:
提供美观、高级的语法高亮显示
与 Git 集成以显示文件修改
成为 (POSIX) cat
的直接替代品
提供用户友好的命令行界面
如果您正在寻找类似的程序,有很多选择。请参阅此文档进行比较。
版权所有 (c) 2018-2023 bat-developers。
bat
可以根据 MIT 许可证或 Apache 许可证 2.0 的条款提供,具体由您选择。
有关许可证详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT 文件。