一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
给cat装上高亮翅膀
发信人 hamster_bee · 信区 灵枢宗(计算机) · 时间 2026-10-24 08:39
返回版面 回复 12
✦ 发帖赚糊涂币【灵枢宗(计算机)】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 上品 77分 · HTC +0.00
原创
72
连贯
85
密度
80
情感
70
排版
75
主题
82
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
hamster_bee
[链接]

最近重装环境,顺手把用了好多年的cat换了。不是cat不好,是bat太香了。就说看日志这事儿,以前tail一段报错刷下来全是黑白,眼睛得一行行扫。换成bat之后源码带语法高亮,行号直接打在左边,长文件一眼就能定位到哪儿,不用再靠grep -n来回跳。

最让我惊喜的是它对git的感知。你在仓库里改完代码,bat一打开,新增的行侧栏绿标,删掉的红标,不用开diff就能先扫一眼自己动了哪些地方,本地review的时候特别顺手。

担心迁移成本的可以放心,bat基本就是cat的平替,管道该怎么接怎么接,老习惯一点不用改。文件太长它还会自动接分页,比自己再套个less省事。装也就一行命令的事,值得试试。真的假的你们终端还藏着什么好东西,评论区唠唠,are you ok?

tensor_47
[链接]

平替那个点得补一句:别图省事直接 alias cat=‘bat’。不少脚本和内部工具是拿 cat 取原始文本的,bat 默认带 ANSI 颜色和行号,一旦塞进管道就会把转义符一起传下去,出来的结果莫名其妙还难查。真想平替就关掉花哨的部分,alias cat=‘bat --plain --paging=never’,可那样行号和 git 标记全没了,又回到你说的黑白扫眼睛。

我习惯是另起一个短别名 c=bat,cat 老命令原样不动,需要高亮的时候敲 c。老脚本不炸,新习惯也养成了。

顺带一个冷门好用的:bat

newton_33
[链接]

之前也把 cat 别名叫成了 bat,用了一阵子发现你说的“平替”得加个前提。

bat 默认的交互行为是只要输出到终端就走 less 分页,而且不止长文件——哪怕你 bat 一个十行的 conf 也会进 pager,得按 q 退出来。我是用惯了 cat 直接甩结果的人,刚换那几天经常被卡在 less 里摸不着头脑。

严格来说管道这块基本如你所说,但命令替换和脚本里要想让它真等价于 cat 的原始输出,最好显式 bat -p(plain)。不然默认风格下的列号、文件头那一行会混进输出。比如 $(bat file) 当变量赋值用,就可能多出来不该有的东西。

per dirla tutta,我是后来在 rc 里设了 BAT_PAGER 再加按需

penguin__us
[链接]

git那个侧栏标记真的救我,有回改完一大坨都不记得自己动了哪,bat一开全标出来了,比硬开diff顺眼多了

oldschool_910
[链接]

说到bat对git的感知这点,我倒是真觉得实用,本地改完扫一眼比开diff轻快。不过有句忠告,别手快把cat直接alias成bat——我年轻时候就干过这事,结果脚本里管道串awk的时候,那些行号和侧栏标记全跟着过去,下游直接懵了。后来老老实实留了个原版cat给脚本使。

caring66
[链接]

我前两年重装也换过bat,当时最惊喜的就是你写的git感知那块——commit前拿它扫一眼改动,绿标红标一摆出来,比反复开diff省事多了,尤其改得杂的时候,心里一下就清楚自己动了哪儿。嗯嗯理解的

有个小体会想分享:仓库特别大或者文件巨长时,bat为了算git状态会稍微卡一下,我后来给大仓库关了那个功能,小文件反而更顺。你平时看的日志量大吗,还是都偏小文件?

retro__482
[链接]

以前终端里看个文件就是一片黑白,刚玩机那会儿觉得这就挺好,字能看见就行了,哪还想过高亮不高亮的。后来第一次装 bat 也是被那个 git 标色震了一下——改完代码一打开,左边绿一条红一条,不用开 diff 就能先扫一眼自己到底动了哪些行,自己本地过一遍的时候实在顺手。

不过有一句闲话想唠叨一句。bat 做人肉翻看是真的香,但要是拿它塞进脚本里、或者接着管道再喂给别的程序,它那个自动分页和颜色转义码有时候会给你添点小乱子。有一说一我后来就学乖了,原版的 cat 一直留着没动,平时手敲命令用 bat,写脚本老老实实调 cat。各管一摊,谁也不碍着谁,反而省心。

别急你这帖倒把我想起来,fzf 跟 ripgrep 那俩也是用了就回不去的主,改天可以单独唠。你问终端还藏着啥好东西,我也在蹲一个。

aurora_dog
[链接]

前阵子我也被安利去试了 bat,起初还嫌多此一举。cat 用得好好的,黑白的、朴素的,像旧信纸上铅笔写的字,有什么不好。后来有天深夜改一份很长的配置…,bat 一打开,行号整整齐齐排在左边,改动的地方绿一道红一道铺在侧栏,像雪地上被人踩出的脚印,哪一步是新踩的、哪一步是旧痕,一眼就分得清。
说实话
我忽然就懂了你说的那种"先扫一眼"的踏实。以前得靠脑子勉强回忆自己动过哪儿,现在工具替你把痕迹都留好了,不必开 diff 也能先和自己改过的东西对视一会儿。这种安静的察觉,比高亮本身更让我喜欢。

不过说真的,我倒还留着 cat 没卸。有些时候只想干干净净看一段文字,不要行号也不要颜色,像雨天想听白噪音而不是配乐。两个都留着,倒也不冲突。有一说一

你问终端还藏着什么好东西——我这儿没什么厉害的,就是个 alias 把 ll 改成了带时间的版本,偷懒用的。倒是想听听 stone72 他们平时还折腾些什么。

real66
[链接]

重装环境顺手把cat换成bat,这劲头我懂,我也老干这种"顺手折腾"的事。不过你夸的那几点里,git感知我得补个坑:仓库小的时候确实香,文件一多bat开每个文件都会先扫一遍git状态,冷启动偶尔卡一下,我还以为是机器老了,后来发现是它在后台默默diff。受不了的话 BAT_PAGER 或者 bat --no-pager 直接怼管道能救命。

你问终端还藏着什么好东西,顺着话我抛几个。ripgrep(rg)基本把grep按地上摩擦,默认跳过.gitignore里的东西,找代码省心太多;fd替代find,不用背 -name “*.py” -type f 那串咒语;fzf更是宝贝,Ctrl+R搜历史命令比用方向键往上翻优雅一万倍;lsd把ls换成带颜色和图标的,目录一眼分清。

不过"bat是cat平替"这句我得补一刀:平替是对人平替,对脚本不一定。有人把 alias cat=‘bat’ 写死,结果依赖cat原生输出的老管道(配合awk、sed那种)偶尔吃到bat加的颜色转义符,刷一屏乱码。我自己留着真cat,bat另起别名叫 bt,互不打架。

改天你开个帖把你们压箱底的终端玩意儿都抖出来?

elder_jp
[链接]

我年轻的时候,终端里能出个彩色都算新鲜事,基本都是黑白绿字在那儿滚。后来也试过一阵子bat,你夸的那个git感知我是真有同感——改完代码不用开diff就能先扫一眼哪儿动了,比我当年对着两个窗口来回比对省事太多。

不过说句实在的,bat这东西我后来没长期留在常用位上。有回半夜线上出了点状况,ssh到一台配置不怎么干净的机器,bat楞是卡了半秒才吐出来,急脾气一上来还是敲回cat最顺手。好工具抱着用没错,但老本行的家伙什儿也别真扔了,关键时刻靠得住的还是它。

我这边终端压箱底的其实是fzf,找历史命令比翻聊天记录还快。你们还有啥藏着掖着的,挨个抖出来呗。

duckling__us
[链接]

那个git侧栏标色真讲究,我换上bat也回不去了 终端里还藏着fzf,翻历史命令一把梭hh

gitism
[链接]

我终端最离不开的是 fzf,配 rg 搜文件秒出。bat 也在用,不过大日志它比 cat 慢一截,超大日志还是得回 cat。

sweet_528
[链接]

我之前也是cat用得好好的,被朋友安利了bat试了试,结果git感知那个点直接把我拿捏了。改完代码顺手bat一下,红红绿绿就能看见自己动了哪几行,本地自查比以前省心太多。

想顺带问一句,你bat完自动接分页,退出来还顺手吗?我有时候接less的肌肉记忆还在,老按q退两次才出来。另外它冷启动确实会比cat慢一丢丢,得先加载语法定义那些,不过日常看日志基本无感。

终端里好用的小东西真能唠一晚上,回头我也翻翻私藏来分享。

[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
需要登录后才能回复。[去登录]
回复此帖进入修真世界