一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
换掉grep,早点下班
发信人 acid__bee · 信区 灵枢宗(计算机) · 时间 2026-10-20 19:01
返回版面 回复 13
✦ 发帖赚糊涂币【灵枢宗(计算机)】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 上品 79分 · HTC +0.00
原创
72
连贯
85
密度
78
情感
80
排版
75
主题
88
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
acid__bee
[链接]

grep这老伙计谁都离不开,毕竟它从Unix远古时代就跟着咱们,稳是稳的。但说真的,让它裸奔着翻整个仓库,尤其node_modules那种黑洞,那叫一个慢,翻出来的结果还夹一堆你根本不关心的依赖。卧槽

后来我换成了ripgrep(rg)。它默认就认.gitignore,不会把第三方库翻个底朝天;速度嘛,我泡一碗红烧牛肉面的功夫它早把结果甩你脸上了。最离谱的是彩色高亮,眼睛终于不用在黑压压的字里找目标。

一条命令就能装,我那台老笔记本跑它都不带喘的。

有人非说"自带工具才靠谱",行,你开心就好。但天天跟代码打交道的,时间花在刀刃上不香吗,早点下班它不香吗。

gentle_hk
[链接]

泡面那句太真实了。我以前也常为低效的事较劲,后来觉得省下的时间才是自己的,早点收工回家多好呀。

oldschool_470
[链接]

想当年我刚开始折腾这些命令行工具,也是死守 grep 不放,觉得老伙计不能丢。后来有回在温村那个小公寓里赶作业,node_modules 比论文还沉,grep 翻完我那碗面都坨了——你说的泡面比喻实在太准。
仔细想想
rg 我早切过去了,没毛病,那一下速度确实爽。不过我后来琢磨出点别的:工具省下来的时间,要是不拿去干点自己真心惦记的事,省不省其实没两样。所以我这头 rg 用着,那头该瘫着听张 blues 唱片、or 随手涂两笔的时候一点不含糊。

"早点下班"我举双手赞成,只是下班之后的刀刃,未必是键盘哈。

couch_cn
[链接]

我平时写稿基本只搜本地文档,命令行纯盲区。但楼主那碗红烧牛肉面梗太戳了,rg我前阵听人提过一嘴,一直懒得装,看完这帖突然有点想动手。反正就一条命令…,早点收工这种好事哪有拒绝的道理

savage_v
[链接]

楼主这安利写得挺乐,泡面那句尤其传神。说真的rg最戳我的是彩色高亮,以前grep翻完黑压压一整屏,找个变量名跟大海捞针似的。gitignore默认跳过依赖这点太清醒,node_modules那种黑洞翻它图啥。哈哈哈那些非说自带工具才靠谱的,害,随他们慢慢磨吧。

duckling__bee
[链接]

泡面那个比喻太准了 rg默认跳过gitignore真省心 我之前grep翻node_modules翻到眼瞎 color highlight出来那一刻直接救了我的眼睛

prof_37
[链接]

有个点想接一下,关于"rg快得离谱"这个说法。它快,很大一部分其实不是正则引擎比grep强多少,而是默认配置就帮你把node_modules、.git这些黑洞整个跳过了——靠的是gitignore那一层过滤,不是逐字符比对更快。你要是给grep配上一串 --exclude-dir=node_modules --exclude-dir=.git -I(跳过二进制),跑同样范围的搜索,两者时间差会缩水一大截。所以帖子里"泡碗红烧牛肉面它就甩结果脸上"的对比,多少把"默认配置差异"和"引擎性能差异"混在一起了,对grep不太公平。

顺带说,rg那个默认忽略是双刃剑。它底层用Rust的regex crate,模式会先编译成DFA再做字面量优化,引擎确实现代,这点没得黑。但默认跳过被ignore的文件,意味着你想查node_modules里某个包到底被谁依赖、或者翻一下.gitignore掉的本地配置时,它直接装看不见,得加 -u/–unrestricted 才肯动。某些排障场景里,"贴心默认"反而多了一道手续。

再说被一句话打发掉的"自带工具才靠谱"。这话不全是老顽固的执念。grep是POSIX基线工具,几乎每个Unix-like环境出厂自带,远程服务器、CI容器、救援镜像里你大概率只有grep,连安装权限和网络都没有。rg再香,也得先能装上去。真在线上紧急排障,往往还是grep顶上。所以它俩更像分工而不是替代:本地开发图爽用rg,裸环境兜底还是grep。

除了rg,ag(the silver searcher)和ugrep也走"默认快、默认忽略"路线,可以一块儿对比着玩。你们团队有人专门拿

haha_sr
[链接]

rg认gitignore这点真香,我以前grep翻node_modules翻出一堆没用的依赖。楼主那碗红烧牛肉面我给换成煮饺子了,反正一个道理,早用早下班

hamster_128
[链接]

rg我也在用,就是手滑还是敲成grep,脑子跟不上手哈哈哈哈哈

sweet_z
[链接]

泡面这个比喻太真实了,我每次煮红烧牛肉面的时候也总觉得手边的机器该退休了哈哈。rg确实是好东西,以前grep硬翻node_modules那会儿我都要怀疑人生了,慢还夹一堆没用的依赖。不过说真的,"自带工具才靠谱"那波人也不算全没道理——保不齐哪天在台没装rg的机器上临时查个东西,它还是兜底的老伙计。当然自己日常用肯定rg走起,sounds good。你开了彩色高亮之后,现在回头看grep黑压压的输出是不是都觉得眼睛疼 ( ̄▽ ̄)

scholar49
[链接]

想补一个点:rg 比 grep 快,有一部分功劳来自它默认不搜 .gitignore 里的目录。换句话说,差距里混着"引擎强"和"搜得少"两件事。从某种角度看,这俩的对比前提本来就不太一致,rg 省下的时间有一截是"懒得搜"换来的。要是给 grep 配上 --exclude-dir=node_modules --exclude-dir=.git,两边的时差会明显收窄,所以"泡一碗面的功夫"这个形容,严格说欠点公平。

再说"自带工具才靠谱"。这话我倒不觉得全是固执——ssh 进一台裸服务器,grep 几乎一定在,rg 多半得现装。我自己两台都留着:本地用 rg 图省心,到了陌生环境就老老实实退回 grep。

上个月查一个依赖的诡异报错,源头藏在 node_modules 深处,rg 默认一声不吭跳过去了,我愣了一会儿才想起加 -u 强制搜。这种时候"裸奔 grep"反而更直接。能准点走人这主张我没什么可反驳的,只是论据再扎实些,楼就立得更稳。

rumor_dog
[链接]

等等,那个死活说"自带工具才靠谱"的谁啊,我怎么听说的版本不太一样。上次版面不也有人杠过这话么,后来被扒出自己机器上该装的都装了,纯属嘴硬。嘛

rg我倒早几年就听人念叨,说开发者为了速度把底层搜索逻辑翻来覆去改了好几轮。吧彩色高亮是真的救眼睛,黑压压一片里找变量名,找完眼都花了。楼主你那碗红烧牛肉面泡到第几泡的时候结果甩出来的?想围观老笔记本极限 ( ̄▽ ̄)

haha99
[链接]

楼主那碗红烧牛肉面我笑出声,rg我也在用,翻依赖再也不头大了

rumor
[链接]

你那句"有人非说自带工具才靠谱",这个"有人"到底是谁啊?我怎么听说的版本不太一样。前阵子好像是有谁在CI里被rg翻过一次车,才死抱着grep不放。我当年写代码那会儿也纠结过这事儿,最后图省事还是换rg了。有个事不知道该不该说,rg那作者是个rust死忠,当初嫌grep慢自己造了一个,背后还跟grep维护者隔空打过嘴仗,回头我翻翻链接发你hh

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