bat 简介
bat 是 cat 命令的一款免费开源替代品,能在“终端”中以语法高亮显示文件。它支持为大量编程语言和标记语言的代码着色,显示你在 Git 中改动过的行,为每行编号,并自动把长文件交给分页器;当你把它的输出通过管道传给其他命令时,它又会像 cat 一样工作。bat 由 David Peter 和 bat 开发者们开发,采用 MIT 许可证和 Apache License 2.0 双重许可。
bat 在 Apple 芯片 Mac 和 Intel Mac 的“终端”中运行,可以通过 Homebrew(brew install bat)或 MacPorts 安装。它与其他工具配合得很好:可以用于 fzf 的预览、为 man 手册页着色,或显示 ripgrep 的搜索结果。
主要功能
bat 让在“终端”中阅读文件轻松得多。
- 语法高亮:为大量编程语言和标记语言的代码着色。
- Git 集成:在侧边栏中显示新增和修改的行。
- 不可见字符:bat -A 会显示制表符、空格和行尾。
- 自动分页:较长的输出会交给 less 等分页器。
- 兼容 cat:在管道中使用时,bat 会像 cat 一样输出纯文本。
- 主题:选择配色主题;bat --list-themes 会列出所有主题。
- 行范围:用 --line-range 只显示文件的一部分。
- 与其他工具配合:用于 fzf 预览、彩色 man 手册页等。
0.26.1 版本新功能
bat 0.26.1 增加了一项小功能,并修复了多个错误。
- -h 和 --help 的输出支持分页
- 修复配合分页器使用 --list-themes 时卡住的问题
- 修复行范围中的负数无法正确读取的问题
- 修复导致无法使用自定义资源的 Docker 语法错误
- 使用管道时不再意外添加装饰
bat 常见问题
bat 免费吗?
是的。bat 免费且开源,采用 MIT 许可证和 Apache License 2.0 双重许可。
如何在 Mac 上安装 bat?
如果使用 Homebrew,在“终端”中运行 brew install bat;也可以用 MacPorts 安装。GitHub 发布页面上还有适用于 Apple 芯片 Mac 和 Intel Mac 的预编译程序。
bat 和 cat 有什么不同?
bat 增加了语法高亮、行号、Git 改动标记和自动分页。当你把它的输出通过管道传给其他命令时,它会像 cat 一样输出纯文本。
bat 能高亮哪些语言?
bat 能高亮大量编程语言和标记语言,你也可以自己添加新的语法定义。
如何更改 bat 的配色主题?
运行 bat --list-themes 查看主题,然后用 --theme 指定;也可以设置 BAT_THEME 环境变量来保存你的选择。
如何在 bat 中关闭分页器?
使用 --paging=never,或在 bat 的配置文件中设置。bat 只会对一屏显示不下的输出进行分页。
bat 能显示隐藏字符吗?
能。bat -A 会显示制表符、空格和行尾等不可见字符。
可以把 bat 和 fzf 一起用吗?
可以。bat 常被用作 fzf 的预览命令,例如 fzf --preview "bat --color=always {}"。
bat 能为 man 手册页着色吗?
能。bat 的文档说明了如何把它设为 MANPAGER,让 man 手册页带语法高亮显示。
bat.FULLMAC.app 上的 bat 下载来自哪里?
下载按钮指向 bat 的官方 GitHub 页面 https://github.com/sharkdp/bat,那里有安装说明和各个版本。bat.FULLMAC.app 不会修改或重新打包该工具。
相似应用
- tmuxtmux 是一款免费开源的终端复用器。它能让你在一个终端里运行多个程序,分成多个窗口和并排的窗格,并用键盘在它们之间切换。它最有用的功能是会话:从会话中分离后,里面的一切都会继续运行,即使你关闭终端或 SSH 连接中断也没关系;之后重新连接,就能从中断的地方继续。tmux 由 Nicholas Marriott 和其他贡献者开发,以 ISC 许可证发布。开发工具
VigilVigil 是一款免费开源的 Mac 原生终端,让编程智能体像团队一样协作。你不必再亲自在多个智能体窗口之间复制消息,只需把任务交给根节点的管理者智能体,它可以自行启动工作者智能体和子管理者。细节沿着树向下传递,结果以摘要形式返回给管理者,让管理者的上下文保持精简。实时节点树可以一次看到整个团队,每个节点都保留智能体自己的终端界面,你可以打开任意节点直接接手。开发工具
SwitchShuttleSwitchShuttle 是一款 Mac 菜单栏应用,让常用的终端命令只需一次点击或一个快捷键就能运行。你可以把命令整理到多级子菜单中,为每条命令设置全局快捷键和表情图标,然后在任何地方运行,无需先打开终端再输入。它支持 iTerm、Terminal、Warp、Alacritty、Hyper 等终端,每条命令都可以在当前窗口、新标签页或新窗口中运行。开发工具
tty7tty7 是一款用 Rust 编写的 GPU 渲染终端,基于 Zed 的 gpui 和 Alacritty 的终端核心构建。Shell 和窗格归后台服务器所有,而不是归窗口所有,因此即使退出应用,Shell 也会继续运行,无需 tmux。重启后,布局、屏幕内容和受支持代理的对话都会恢复。开发工具
TabbyTabby(原名 Terminus)是一款高度可配置的终端模拟器,同时也是 SSH、Telnet 和串口客户端。它一次替代多种工具:带标签页和分屏的本地终端、管理服务器的连接管理器,以及用于路由器、单片机等设备的串口终端。你的 SSH 密码和密钥可以保存在加密保险库中,可以通过 SSH 传输文件,还能用主题和插件改变外观和功能。Tabby 由 Eugene Pankov 开发,可在 Mac、Windows 和 Linux 上运行。开发工具
kittykitty 是一款快速、功能丰富的终端模拟器,用 GPU 绘制文字,滚动和大量输出都很流畅。它内置标签页和多种布局的分屏窗口,支持真彩色、连字和表情符号,还有自己的图形协议,可以直接在终端里显示图片。kitty 可以通过脚本和命令行控制,并能用称为 kitten 的小程序扩展,例如沿用你的设置进行 SSH 连接、并排比较文件和输入 Unicode 字符。kitty 由 calibre 的开发者 Kovid Goyal 制作。开发工具
David Peter 的更多应用
FULLMAC.app 不托管此应用。下载按钮会将你带到开发者自己的页面。