如何在 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 命令
如果您熟悉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) 命令?相关推荐
- 创建组groupadd_如何在Linux中创建组– groupadd命令
创建组groupadd In this tutorial, we will learn how to create a Group in Linux using groupadd command. 在 ...
- linux进入文件夹命令,如何在 Linux 中不使用 CD 命令进入目录/文件夹?
众所周知,如果没有 cd 命令,我们无法 Linux 中切换目录.这个没错,但我们有一个名为 shopt 的 Linux 内置命令能帮助我们解决这个问题. shopt 是一个 shell 内置命令,用 ...
- groupdel 删除组_如何在Linux中删除组– groupdel命令
groupdel 删除组 Linux groupdel command is used to delete a group. This is a very powerful command, so u ...
- linux命令行运行c程序,如何在Linux中编写和运行C程序
Linux正在成为开发人员的编程天堂,成为开源和免费操作系统. Turbo C编译器已经是一种编译程序的旧方法,所以让程序员转向Linux以获得新的编程环境. 在本文中,我们将解释如何编写,编译和运行 ...
- 禁止linux关机,如何在Linux中禁用关机和重新启动命令
shutdown命令调度一个Linux系统关闭电源的时间,它也可以用于在使用特定选项调用时停止,关闭电源或重启机器 ,并重新引导系统重新启动. 默认情况下,某些Linux发行版(如Ubuntu,Lin ...
- linux 杀掉php,Linux_在Linux系统中使用xkill命令杀掉未响应的进程,我们如何在Linux中杀掉一个资 - phpStudy...
在Linux系统中使用xkill命令杀掉未响应的进程 我们如何在Linux中杀掉一个资源/进程?很明显我们会找出资源的pid然后用kill命令. 说的更明白一点,我们可以找到某个资源(比如termin ...
- linux系统export,Linux入门进阶 - 如何在Linux中使用export命令
原标题:Linux入门进阶 - 如何在Linux中使用export命令 来自: Linux迷 链接:https://www.linuxmi.com/linux-export.html Linux ex ...
- 如何在linux上压缩文件夹,如何在Linux中使用命令压缩文件和文件夹
通常情况下,我们都是安装了zip,但验证一下也无妨.你可以运行下面的命令来安装zip sudo apt install zip unzip 现在你知道你的系统支持zip了,你可以继续阅读学习如何在Li ...
- linux重启网卡命令_如何在 Linux 中更改 MAC 地址 | Linux 中国
在向你展示如何在 Linux 中更改 Mac 地址之前,让我们首先讨论为什么要更改它.-- Dimitrios Savvopoulos 在向你展示如何在 Linux 中更改 MAC 地址之前,让我们首 ...
最新文章
- 什么是IOC为什么要使用IOC
- 腾讯云微计算实践:从Serverless说起,谈谈边缘计算的未来
- 用 tap/tun 做虚拟机的网卡
- 让你在浏览器也能享受H.265播放器的高清画面
- Firefox 增强版 仅仅5.7 MB
- 学习响应式BootStrap来写融职教育网站,Bootsrtap第十一天Dplayer播放器
- PyTorch系列入门到精通——模型保存与加载
- 小心!你的脸正在成为色情片主角
- The file is absent or does not have execute permission This file is needed to run this program
- c语言上机作业数组,2015二级c语言上机题库
- 红外接收hs0038NEC协议
- 3d建模和计算机专业对口吗,学3d建模有学历门槛吗
- MongoDB 4.2.3 安装以及安装遇到的问题“service MongoDB failed to start,verify that you have sufficient privilege”
- miui 10 android 9.0,小米基于安卓9.0的MIUI10稳定版来了,你的手机可以更新吗?
- 庖丁解牛Transformer原理
- web程序无法访问:The requested resource () is not available.错误
- 怎么申请好用的企业邮箱?外贸公司企业邮箱托管
- HTML语言制作知识竞猜页面,100道基于Web标准的网页设计与制作试题及答案
- python3脚本使用sql loader批量导入字节文件并二次处理
- 小米红米note 8 Pro(Redmi note8 Pro)刷机|刷欧洲版(国际版)系统|此教程也适合其它机型小米手机