如何在 Linux 中使用 ripgrep (rg) 命令()

莫道桑榆晚,为霞尚满天。这篇文章主要讲述如何在 Linux 中使用 ripgrep (rg) 命令?相关的知识,希望能为你提供帮助。
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 命令【如何在 Linux 中使用 ripgrep (rg) 命令()】如果您熟悉grep 命令用法,您会发现 ripgrep 的工作方式类似。您向它提供搜索字符串和文件名,它将搜索文件并显示输入字符串与文件内容匹配的位置。
对于本教程,我已经克隆了灰尘项目的存储库,我将在克隆的存储库中执行命令。
基本搜索
Cargo.html 文件中单词描述的示例搜索:
$ rg description Cargo.toml 3:description = "A more intuitive version of du" 53:extended-description = """\\

正如预期的那样,ripgrep 工具在我指定的文件中搜索并显示具有匹配文本和行号的文件。
如何在 Linux 中使用 ripgrep (rg) 命令()

文章图片

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

文章图片

或者,您也可以使用“--file”选项,其中包含您要匹配的模式。当您定期搜索要匹配的一组模式时,您可以将其存储在一个文件中并使用“--file”选项指定它。
如何在 Linux 中使用 ripgrep (rg) 命令()

文章图片

上下文搜索
有时,拥有匹配行的上下文会很好,尤其是在代码存储库中搜索时。-C 或 --context 选项在这里有帮助。此选项接受一个数值并显示匹配前后的行。
如何在 Linux 中使用 ripgrep (rg) 命令()

文章图片

有时您可能只想查看上面的几行,包括匹配的行。有时,您只需要下面的行,包括匹配的行。
您可以使用选项“-A”、“--after-context”的缩写和一个数值来显示每次匹配后的行。
如何在 Linux 中使用 ripgrep (rg) 命令()

文章图片

对于每次匹配之前的行,您可以使用选项“-B”,“--before-context”的缩写,以及一个数值。
如何在 Linux 中使用 ripgrep (rg) 命令()

文章图片


ripgrep 提供的列有几个选项。
如果您是 vim 用户,您会喜欢 --column 标志。它打印文件中匹配文本的“行:列”。
如何在 Linux 中使用 ripgrep (rg) 命令()

文章图片

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

文章图片

杂项
有几个选项可以与 ripgrep 一起使用。
您可以使用“-s”或“--case-sensitive”选项来匹配区分大小写的文本。
如何在 Linux 中使用 ripgrep (rg) 命令()

文章图片

如果要保持不区分大小写,可以使用“-i”或“--ignore-case”标志。
如何在 Linux 中使用 ripgrep (rg) 命令()

文章图片

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

有时您想从搜索结果中排除某个模式。为此,您可以使用“-v”或“--invert-match”来排除指定的模式。
如何在 Linux 中使用 ripgrep (rg) 命令()

文章图片

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

文章图片

结论ripgrep 是一个非常棒的工具,您可以使用它,尤其是作为类 UNIX 环境中的程序员。
ripgrep,即使名称可能暗示其他方式,也不是要替换 grep,因为它的行为不同。但是这两种工具都很有用,这取决于您的用例。

    推荐阅读