什么是 ripgrep?
ripgrep(即 rg 命令)是由 Andrew Gallant 用 Rust 编写的面向行的搜索工具。它会在当前目录中递归搜索正则表达式,同时遵循你的 .gitignore 规则,并自动跳过隐藏文件、被忽略的文件和二进制文件。它是 VS Code 等编辑器背后的搜索引擎,通常比 GNU grep、The Silver Searcher 和 ack 更快。
--engine auto 可透明回退到 PCRE2、更丰富的 --json 输出,以及正则引擎持续的吞吐提升。官方源中的版本早于其中大部分改进。
⚡ ripgrep 的主要特性
🚀 极快
有限自动机正则引擎、SIMD 字面量扫描、内存映射和并行目录遍历,使它在大型目录树上比 grep 更快。
🙈 遵循 .gitignore
默认跳过被忽略的文件、隐藏文件和二进制文件,因此结果正是你关心的内容。可用 -u、-uu 或 -uuu 覆盖。
🌍 完整的 Unicode 支持
默认支持 Unicode——字符类、大小写折叠、单词边界和字素处理都能正确工作,且几乎没有速度损失。
🧩 PCRE2 正则
-P 可启用环视和反向引用。此构建已内置 PCRE2,开箱即用并启用了 JIT。
📄 按文件类型过滤
用 -t rust 限定语言,用 -T html 排除,或自定义类型。内置 800 多个匹配规则。
🔁 多行与替换
用 -U 跨行搜索,用 -r 预览替换,用 --json 输出结构化结果。
apt upgrade 即可保持最新。
📦 从 deb.griffo.io 安装
步骤 1:添加仓库
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update步骤 2:安装 ripgrep
# 安装最新版 ripgrep
sudo apt install ripgrep
# 验证安装
rg --version# 安装最新版 ripgrep
apt install ripgrep
# 验证安装
rg --version步骤 3:Shell 补全
# bash、zsh 和 fish 的补全已随软件包提供——
# 无需配置。打开新的 shell 并按 Tab:
rg --ty<Tab>
# 手册页也会一并安装
man rg🎯 基本使用示例
日常搜索:
# 搜索当前目录树
rg 'TODO'
# 忽略大小写、全词匹配
rg -i -w 'timeout'
# 显示每个匹配前后 3 行上下文
rg -C 3 'panic!'
# 只列出包含匹配的文件
rg -l 'BurntSushi'限定搜索范围:
# 仅 Rust 文件
rg -t rust 'unsafe'
# 排除 HTML 和 CSS
rg -T html -T css 'font-size'
# 包含被忽略和隐藏的文件
rg -uu 'password'
# 用 glob 限定
rg -g '*.toml' 'version'超越普通 grep:
# 通过 PCRE2 使用环视和反向引用
rg -P '(?<=fn )\w+' src/
# 跨行搜索
rg -U 'struct \w+ \{\n[^}]*pub'
# 预览替换(不写入文件)
rg 'v(\d+)\.(\d+)' -r 'v$1.$2.0'
# 供脚本使用的结构化输出
rg --json 'error' | jq -r 'select(.type=="match") | .data.path.text'🔧 工具集成
许多其他工具都以 ripgrep 作为搜索后端:
- fzf: 以
rg为数据源的实时重载交互式 grep - Neovim / Telescope: 只要 PATH 中有 ripgrep,
live_grep就会使用它 - Helix: 全局搜索基于相同的底层库
- bat: 为搜索结果提供语法高亮预览
- Yazi: 文件管理器搜索基于 ripgrep
🚀 为什么选择 deb.griffo.io?
- 官方 Ubuntu: 有提供,但冻结在发布时的版本
- 手动安装: 需要 Rust 工具链,或手动管理二进制文件及其补全
- deb.griffo.io: 最新版本,自动更新
- ✅ 最新特性: 最新的选项、引擎改进和性能优化
- ✅ 无需手动设置: 预构建二进制文件,无需 cargo 编译
- ✅ 自动更新: 上游发布后数小时内更新软件包
- ✅ 完整软件包:
rg、rg.1手册页以及 bash/zsh/fish 补全 - ✅ 无依赖: 静态链接的 musl 构建,内置 PCRE2
- ✅ 多发行版: 支持 Ubuntu 22.04、24.04、25.10 和 26.04
- ✅ 易于维护: 使用标准 apt 命令更新
📦 软件包构建仓库
Ubuntu 软件包在此 GitHub 仓库中自动构建和维护:
- 🔎 ripgrep-debian - 最新发布构建
🔗 相关软件包
deb.griffo.io 还提供:
.gitignore 的用户、调用 rg 的编辑器与工具链配置,以及在意大型目录树搜索速度的用户。