ripgrep(rg)
名称、版本与用途
- 名称:ripgrep
- 用户安装版本:15.1.0
- 用户路径:
~/.local/bin/rg - 当前 Codex 会话优先版本:15.2.0
- 用途:递归搜索文件内容,默认尊重
.gitignore,适合代码库。
检查实际解析顺序:
whence -a rg
rg --version
~/.local/bin/rg --versionCodex 把自带的 rg 目录放在 PATH 最前面,因此本次会话执行 rg 得到 15.2.0。普通登录 Shell 通常会使用用户版 15.1.0。
基本语法(Synopsis)
rg [OPTIONS] PATTERN [PATH ...]
rg [OPTIONS] --files [PATH ...][] 表示可选项,... 表示可重复;大写名称表示需要替换的参数。
当前安装与更新
用户版由本地 install_cli_tools.sh 从官方 GitHub release 下载到
~/.local/bin,并被 core 离线 bundle 收录。它不属于 dpkg。
安装脚本遇到已有 ~/.local/bin/rg 会跳过。升级时应下载新的官方 Linux release,在临时目录核验版本后替换用户版二进制及补全文件。
zsh 启动集成
间接相关:~/.local/bin 和 ~/.zfunc 在 .zshrc 初始化 Oh My Zsh 前加入 PATH 与 fpath。
基本功能与推荐用法
rg 'TODO|FIXME' # 正则搜索
rg -n -S 'httpClient' src/ # 行号、智能大小写
rg -t py 'import requests' # 只搜索 Python
rg -g '*.toml' -g '!vendor/**' 'name' # include / exclude glob
rg --hidden -g '!.git/**' 'token' # 包含隐藏文件
rg -l 'deprecated' # 只列文件名
rg --files # 列出会被搜索的文件
rg 'old' -r 'new' # 预览替换结果,不修改文件推荐先用默认规则搜索;只有确实需要时才使用 --hidden、--no-ignore 或二进制搜索选项。
常用搜索示例
rg -l 'TODO' # 只列出包含 TODO 的文件
rg -i 'apple' # 忽略大小写
rg 'function_name' ./src/ # 在指定目录中递归搜索
rg '^engine_\d+' # 匹配以 engine_加数字开头的行
rg -w 'cat' # 只匹配完整单词
rg -o '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' # 只输出匹配到的 IPv4 形式文本
rg 'panic' -B 2 -A 4 # 同时显示前 2 行和后 4 行
rg 'panic' -C 4 # 同时显示前后各 4 行
rg 'useEffect' -t js # 只搜索 JavaScript 文件
rg 'config' -T html # 排除 HTML 文件
rg --type-list # 查看支持的文件类型及对应 globNote
上面的 IPv4 模式只检查“四组 1~3 位数字”的形式,不验证每组是否位于
0~255。
与 grep 的用法区别
rg搜索目录时默认递归,无需像grep那样添加-r或-R。- 在
rg中,-r是--replace的短选项,不是递归选项。 rg默认读取.gitignore等 ignore 文件,并跳过.git/、隐藏文件和目录、二进制文件,以及被 ignore 规则排除的路径。grep通常不会自动读取.gitignore;是否跳过隐藏文件、二进制文件或忽略路径,需要通过参数或 shell 文件列表另行控制。- 若要扩大
rg的搜索范围,可按需使用--hidden(包含隐藏路径)、--no-ignore(不遵守 ignore 文件)或-uuu(逐级取消智能过滤)。
示例中的选项、参数与子命令
本表解释本页示例实际出现的选项、参数、子命令及必要的辅助命令语法。
| 语法元素 | 含义 |
|---|---|
--version | 显示版本。 |
-n, --line-number | 显示匹配行的行号。 |
-S, --smart-case | 模式含大写时区分大小写,否则忽略大小写。 |
-i, --ignore-case | 忽略大小写。 |
-w, --word-regexp | 只匹配完整单词。 |
-o, --only-matching | 只输出每个匹配到的部分。 |
-B NUM, --before-context NUM | 显示匹配行之前的 NUM 行。 |
-A NUM, --after-context NUM | 显示匹配行之后的 NUM 行。 |
-C NUM, --context NUM | 显示匹配行前后各 NUM 行。 |
-t TYPE | 只搜索指定文件类型。 |
-T TYPE | 排除指定文件类型。 |
--type-list | 列出支持的文件类型及其 glob。 |
-g GLOB | 只搜索匹配 glob 的路径。 |
-g !GLOB | 排除匹配 glob 的路径。 |
--hidden | 包含隐藏文件和目录。 |
--no-ignore | 不遵守 ignore 文件。 |
-uuu | 等价于 --no-ignore --hidden --binary,关闭全部自动过滤。 |
-l, --files-with-matches | 只输出包含匹配内容的文件路径。 |
--files | 列出 rg 会搜索的文件,不执行内容匹配。 |
-r REPLACEMENT, --replace REPLACEMENT | 用替换文本展示匹配结果,不修改文件。 |
PATTERN | 搜索模式;默认按正则表达式解析。 |
PATH ... | 一个或多个搜索路径;目录会被递归搜索。 |
whence -a NAME | 显示 zsh 能找到的 NAME 的全部解析位置。 |