ripgrep是开源社区正在进行的 RIIR(用 Rust 重写)努力的一个优秀成果。,它旨在成为经典grep 命令的高级替代品。

使用 ripgrep 的语法如下:

rg <pattern> [files/directories]

使用 ripgrep,无需提及文件名。如果未提供文件名,则搜索所有文件,如果您不知道哪个文件包含您搜索的模式,这将非常有用。

您也可以使用 grep 搜索所有文件,但 ripgrep 无需任何额外努力即可完成。

什么是 ripgrep?

ripgrep是一个递归正则表达式模式匹配工具,它考虑你的 gitignore,如果您的 gitignore 中有特定的文件、扩展名或目录,ripgrep 将忽略它们,从而加快执行时间。

使 ripgrep 脱颖而出的一些功能如下:

  • 在目录中递归搜索模式
  • 输出中的颜色突出显示
  • 支持多种编码格式,如 UTF-8、SHIFT_JIS
  • 能够在压缩的 zip 文件中进行搜索
  • 默认情况下忽略隐藏文件并使用您的 gitignore 文件进行更快的搜索

您可以将其视为 grep,但主要用于搜索文件/文件内容,而不是 grep 处理的原始字节流。

安装 ripgrep

虽然 grep 预装在大多数 Linux 系统上,但 ripgrep 没有该权限。

但是,它在所有主要 Linux 发行版的存储库中都可用,您可以使用包管理器来安装它。

如果您是 Arch Linux 的用户,您已经知道如何安装软件包 :p,但仍然是您应该使用的命令:

pacman -S ripgrep

Gentoo 用户可以使用以下命令安装 ripgrep:

emerge sys-apps/ripgrep

如果您使用 Fedora 或 Red Hat,请在终端中输入以下命令时稍加注意:

sudo dnf install ripgrep

openSUSE 用户(15.1 和更高版本)应该在他们的终端中使用以下命令:

sudo zypper install ripgrep

对于使用 Debian Buster (v10) 或更高版本的用户,请使用 apt。Ubuntu Cosmic Cuttlefish (18.10) 或更高版本也可以使用该发行版的官方存储库。

sudo apt install ripgrep

使用 ripgrep 命令

如果您熟悉grep 命令用法,您会发现 ripgrep 的工作方式类似。您向它提供搜索字符串和文件名,它将搜索文件并显示输入字符串与文件内容匹配的位置。

对于本教程,我已经克隆了灰尘项目的存储库,我将在克隆的存储库中执行命令。

基本搜索

Cargo.html 文件中单词描述的示例搜索:

$ rg description Cargo.toml
3:description = "A more intuitive version of du"
53:extended-description = """\

正如预期的那样,ripgrep 工具在我指定的文件中搜索并显示具有匹配文本和行号的文件。

如果您指定要搜索的多个文件(如果您不指定任何文件,它将搜索所有文件),ripgrep 还将确定其内容匹配的文件名。

或者,您也可以使用“–file”选项,其中包含您要匹配的模式。当您定期搜索要匹配的一组模式时,您可以将其存储在一个文件中并使用“–file”选项指定它。

上下文搜索

有时,拥有匹配行的上下文会很好,尤其是在代码存储库中搜索时。‘-C’ 或 ‘–context’ 选项在这里有帮助。此选项接受一个数值并显示匹配前后的行。

有时您可能只想查看上面的几行,包括匹配的行。有时,您只需要下面的行,包括匹配的行。

您可以使用选项“-A”、“–after-context”的缩写和一个数值来显示每次匹配后的行。

对于每次匹配之前的行,您可以使用选项“-B”,“–before-context”的缩写,以及一个数值。

ripgrep 提供的列有几个选项。

如果您是 vim 用户,您会喜欢 ‘–column’ 标志。它打印文件中匹配文本的“行:列”。

与列相关的另一个选项是“-M”或“–max-columns”,它采用数值表示最大列数。如果匹配行的列数超过,它将让您知道某个特定的行被省略而无法输出到终端。

杂项

有几个选项可以与 ripgrep 一起使用。

您可以使用“-s”或“–case-sensitive”选项来匹配区分大小写的文本。

如果要保持不区分大小写,可以使用“-i”或“–ignore-case”标志。

如果你有一个庞大的代码库,你可以使用多个线程进行模式匹配。您可以使用“-j”或“–threads”选项手动指定线程;它接受一个数值。

$ rg -j 4 TODO

有时您想从搜索结果中排除某个模式。为此,您可以使用“-v”或“–invert-match”来排除指定的模式。

ripgrep 可以使用 ‘-z’ 或 ‘–search-zip’ 标志在压缩存档中搜索文本(如果压缩文件是文本文件)。该标志通常伴随着将二进制文件视为文本文件的“-a”标志。

结论

ripgrep 是一个非常棒的工具,您可以使用它,尤其是作为类 UNIX 环境中的程序员。

ripgrep,即使名称可能暗示其他方式,也不是要替换 grep,因为它的行为不同。但是这两种工具都很有用,这取决于您的用例。

如何在 Linux 中使用 ripgrep (rg) 命令?相关推荐

  1. 创建组groupadd_如何在Linux中创建组– groupadd命令

    创建组groupadd In this tutorial, we will learn how to create a Group in Linux using groupadd command. 在 ...

  2. linux进入文件夹命令,如何在 Linux 中不使用 CD 命令进入目录/文件夹?

    众所周知,如果没有 cd 命令,我们无法 Linux 中切换目录.这个没错,但我们有一个名为 shopt 的 Linux 内置命令能帮助我们解决这个问题. shopt 是一个 shell 内置命令,用 ...

  3. groupdel 删除组_如何在Linux中删除组– groupdel命令

    groupdel 删除组 Linux groupdel command is used to delete a group. This is a very powerful command, so u ...

  4. linux命令行运行c程序,如何在Linux中编写和运行C程序

    Linux正在成为开发人员的编程天堂,成为开源和免费操作系统. Turbo C编译器已经是一种编译程序的旧方法,所以让程序员转向Linux以获得新的编程环境. 在本文中,我们将解释如何编写,编译和运行 ...

  5. 禁止linux关机,如何在Linux中禁用关机和重新启动命令

    shutdown命令调度一个Linux系统关闭电源的时间,它也可以用于在使用特定选项调用时停止,关闭电源或重启机器 ,并重新引导系统重新启动. 默认情况下,某些Linux发行版(如Ubuntu,Lin ...

  6. linux 杀掉php,Linux_在Linux系统中使用xkill命令杀掉未响应的进程,我们如何在Linux中杀掉一个资 - phpStudy...

    在Linux系统中使用xkill命令杀掉未响应的进程 我们如何在Linux中杀掉一个资源/进程?很明显我们会找出资源的pid然后用kill命令. 说的更明白一点,我们可以找到某个资源(比如termin ...

  7. linux系统export,Linux入门进阶 - 如何在Linux中使用export命令

    原标题:Linux入门进阶 - 如何在Linux中使用export命令 来自: Linux迷 链接:https://www.linuxmi.com/linux-export.html Linux ex ...

  8. 如何在linux上压缩文件夹,如何在Linux中使用命令压缩文件和文件夹

    通常情况下,我们都是安装了zip,但验证一下也无妨.你可以运行下面的命令来安装zip sudo apt install zip unzip 现在你知道你的系统支持zip了,你可以继续阅读学习如何在Li ...

  9. linux重启网卡命令_如何在 Linux 中更改 MAC 地址 | Linux 中国

    在向你展示如何在 Linux 中更改 Mac 地址之前,让我们首先讨论为什么要更改它.-- Dimitrios Savvopoulos 在向你展示如何在 Linux 中更改 MAC 地址之前,让我们首 ...

最新文章

  1. 什么是IOC为什么要使用IOC
  2. 腾讯云微计算实践:从Serverless说起,谈谈边缘计算的未来
  3. 用 tap/tun 做虚拟机的网卡
  4. 让你在浏览器也能享受H.265播放器的高清画面
  5. Firefox 增强版 仅仅5.7 MB
  6. 学习响应式BootStrap来写融职教育网站,Bootsrtap第十一天Dplayer播放器
  7. PyTorch系列入门到精通——模型保存与加载
  8. 小心!你的脸正在成为色情片主角
  9. The file is absent or does not have execute permission This file is needed to run this program
  10. c语言上机作业数组,2015二级c语言上机题库
  11. 红外接收hs0038NEC协议
  12. 3d建模和计算机专业对口吗,学3d建模有学历门槛吗
  13. MongoDB 4.2.3 安装以及安装遇到的问题“service MongoDB failed to start,verify that you have sufficient privilege”
  14. miui 10 android 9.0,小米基于安卓9.0的MIUI10稳定版来了,你的手机可以更新吗?
  15. 庖丁解牛Transformer原理
  16. web程序无法访问:The requested resource () is not available.错误
  17. 怎么申请好用的企业邮箱?外贸公司企业邮箱托管
  18. HTML语言制作知识竞猜页面,100道基于Web标准的网页设计与制作试题及答案
  19. python3脚本使用sql loader批量导入字节文件并二次处理
  20. 小米红米note 8 Pro(Redmi note8 Pro)刷机|刷欧洲版(国际版)系统|此教程也适合其它机型小米手机

热门文章

  1. 批量修改World和PPT的文字格式、颜色、大小等
  2. windows10 mysql-8.0.20 重新初始化
  3. Html颜色颜色选择器小技巧
  4. 王老吉药业“关爱烈日下最可爱的人”公益活动在杭启动
  5. 我服务又双叒叕奔溃了,含泪干货分享
  6. 《转》atheros无线驱动之:系统初始化
  7. 反转链表——《剑指offer》
  8. 花生壳内网穿透(Linux版)
  9. MIUI14使用技巧
  10. FPGA学习笔记【FPGA原理与结构】