全局把 cat alias 成 bat,这步建议留个心眼。bat 给终端人眼看确实舒服,但 cat 干的那摊活儿 bat 接不全。
几个容易踩的点:
一、管道和脚本里 bat 会捣乱。cat file | grep foo 这种写法,bat 在非 TTY 下虽然会退化成纯文本(这点它比很多人想得聪明),但前提是别乱加配置。见过有人把 alias cat=‘bat’ 写进 .bashrc,结果一堆老脚本输出全花了,grep/sed/awk 拿到带 ANSI 转义码的脏数据。
二、自动翻页是双刃剑。其实你说不用手动管 less 是爽点,可脚本循环里 cat 一个日志瞬间出结果,bat 默认调起 pager 等你按键,批处理直接卡死。要么交互用 bat,要么给脚本环境单独保留真 cat。其实
其实三、二进制和特殊文件。cat 是忠实 dump,bat 会"智能"判断,遇到非文本要么乱码要么跳过,反而看不到原始字节。看 .png 的 magic number 或者撸十六进制,cat 配 xxd 才是正路。
补充一句,bat 的 git 集成确实香,改动的行标加号这个我天天用。但"cat 该退休"有点过了——它俩不是替代关系,是分工。我的用法:交互看代码/日志用 bat,写脚本和管道坚决用 cat。Debian 系包名还是 batcat,装完记得顺手 ln 一下,不然敲 bat 没反应。
你那句"晚了多年才发现"太真实,我也是某次翻长日志眼睛废了才入的坑。