如何安裝 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 PATTERN | grep -rIn PATTERN . |
| 尊重 .gitignore | 默认开启 | 无;需手动排除或配合其他工具 |
| 固定字符串 | rg -F 'a.b' | grep -F 'a.b' |
| 忽略大小写 | rg -i | grep -i |
| 只列文件名 | rg -l | grep -rl |
| 上下文 | rg -C 3 | grep -C 3 |
| 按扩展名过滤 | rg -t js 或 -g '*.js' | grep -r --include='*.js' |
| 速度 / 并行 | 默认多线程、针对代码库优化 | 单线程为主;大树上较慢 |
| POSIX / 最小镜像 | 需额外安裝 | 系统自带,脚本可移植性高 |
| 读单文件 stdin | rg pattern file | grep 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 展开。用单引号包住正则最省事;含单引号本身时用双引号并转义。
搜完程式碼要對齊設計
理清模块边界后,服务关系仍適合摊在同一张白板上。见 如何建立空間。