如何安裝 ripgrep (rg):基礎正則搜尋、常用 flags 與 grep 對照

安裝 rg,跑第一條正則搜尋,flags 速查,何時仍用 grep。

在仓库里找字符串时,grep -r 能工作,但容易扫进 node_modules、要记得写路径,正则转义也常被 shell 吃掉。ripgrep(命令 rg,BurntSushi / Rust)默认递归、尊重 .gitignore,并把常见搜索场景做成短 flags。本教學專注 安裝 rg、字面量與基礎正則、常用 flags,以及與 grep 的對照,面向 hereink 讀者與 fd、bat 並用的終端機棧;忽略規則細節見站內 ripgrep 與 .gitignore 一文。

rg 与 grep 對照

目标ripgrep (rg)grep
递归搜当前树rg PATTERNgrep -rIn PATTERN .
尊重 .gitignore默认开启无;需手动排除或配合其他工具
固定字符串rg -F 'a.b'grep -F 'a.b'
忽略大小写rg -igrep -i
只列文件名rg -lgrep -rl
上下文rg -C 3grep -C 3
按扩展名过滤rg -t js 或 -g '*.js'grep -r --include='*.js'
速度 / 并行默认多线程、针对代码库优化单线程为主;大树上较慢
POSIX / 最小镜像需额外安裝系统自带,脚本可移植性高
读单文件 stdinrg pattern filegrep pattern file 同样自然

可选:在交互 shell 里 alias grep='grep --color=auto' 保留;日常在仓库里用 rg,在只读 /var/log 单文件或必须 POSIX 的 init 脚本里仍用 /bin/grep。

適合
每天在 Git 仓库搜符号、日志片段、配置键;与 fd/bat 组合;需要默认跳过依赖目录的人。
不適合
不能安裝二进制的极简容器、只搜一个已知路径且不关心 ignore 的单文件——grep 足够;要用 GNU 特有正则扩展时先對照文档。
和站内「ripgrep 与 .gitignore」一文重复吗?

那篇深入 ignore、--no-ignore 与 monorepo 边界;本篇侧重安裝、正则入门、常用 flags 与 grep 對照。两篇互补。

rg 能替代 grep 做替换吗?

不能。rg 只负责搜索;批量替换用编辑器、sd、或谨慎的 sed。先 rg -l 圈文件再改更安全。

为什么 pattern 在 shell 里要加引号?

未加引号时 *、?、$() 会被 shell 展开。用单引号包住正则最省事;含单引号本身时用双引号并转义。

搜完程式碼要對齊設計

理清模块边界后,服务关系仍適合摊在同一张白板上。见 如何建立空間。

立即開會