XUbuntu22.04之自定义fd+rg极速命令组合(二百二十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:在使用fd和rg命令过程中,发现他们组合起来使用还是太繁琐了,他们这么强,自定义fd+rg极速命令组合,使用起来效率更高。

2. Linux fd和rg命令介绍

  • Linux 系统中有许多命令行工具可以帮助用户高效地管理和使用文件描述符(file descriptor,简称 fd)。在 Linux 中,每个打开的文件或套接字都有一个唯一的文件描述符,它是一个非负整数。文件描述符通常用于系统调用,例如 read、write 和 close。在用户空间,可以使用标准 I/O 函数(如 fopen、fdopen、socket 等)获取文件描述符。
  • fd 命令是一个用于探索和管理文件描述符的工具。它可以用来查看当前进程的所有文件描述符、查找特定文件描述符的信息、监视文件描述符的变化等。fd 命令的主要用途是提高系统管理员和开发人员在处理文件描述符方面的效率。
  • 下面是一些常用的 fd 命令选项:
  • fd list:列出当前进程的所有文件描述符。
  • fd show:显示有关指定文件描述符的信息。
  • fd add:为当前进程创建一个新的文件描述符。
  • fd rm:删除指定的文件描述符。
  • fd watch:监视文件描述符的变化。
    rg 命令是 “ripgrep” 的简称,是一个快速的文本搜索工具。与 grep 相比,rg 不仅具有更高的搜索速度,还支持正则表达式、多线程以及更多的实用功能。rg 命令在许多情况下都可以替代 grep,尤其是在需要搜索大量文件或需要使用正则表达式时。
    下面是一些常用的 rg 命令选项:
  • rg search:搜索指定模式。
  • rg --files:只输出包含匹配文本的文件名。
  • rg --hidden:搜索隐藏文件。
  • rg --glob '!.git/*':忽略 Git 仓库中的文件。
  • rg --threads:使用多线程搜索以提高搜索速度。
  • rg --vimgrep:使用 Vim 的语法进行搜索。
  • rg --ignore-case:忽略大小写。
    使用示例:
  1. 搜索当前目录下包含 “linux” 的所有文件:
rg linux
  1. 搜索当前目录下隐藏的文件中包含 “linux” 的文件:
rg linux --hidden
  1. 搜索除了 Git 仓库以外的所有文件中包含 “linux” 的文件:
rg linux --glob '!.git/*'
  1. 搜索当前目录下包含 “linux” 的所有文件,并使用多线程以提高搜索速度:
rg linux --threads

总之,fd 命令和 rg 命令都是 Linux 系统中非常实用的工具,它们可以帮助用户更好地管理和使用文件描述符以及进行高效文本搜索。掌握这两个命令,将使你在使用 Linux 系统时更加得心应手。

3.fd+rg组合方案

v1.0版本

emacs fd_rg_v1.0.sh

#!/bin/bash
# v1.0
# 检查参数数量是否至少为2
if [ "$#" -lt 2 ]; thenecho "Usage: $0 Input your [dir] and [keyword]."exit 1
fi# 定义参数变量
PATTERN="$2"
SEARCH_KEYWORD="$3"# 检查是否有提供第二个参数(路径)
if [ "$#" -eq 3 ]; thenSEARCH_PATH="$1"
elseSEARCH_PATH="."
fiecho "S1 = " $1 
echo "S2 = " $2
echo "S3 = " $3fd -H -g "$PATTERN" "$SEARCH_PATH" | xargs rg -. "$SEARCH_KEYWORD"

v2.0版本

emacs fd_rg_v2.0.sh

# v2.0
# 检查参数数量是否至少为3
if [ "$#" -lt 3 ]; thenecho "Usage: $0 Input your [dir], [*.file], [keyword]."exit 1
fi# 定义参数变量
SARCH_DIR="$1"
SEARCH_FILE="$2"
SEARCH_KEYWORD="$3"# echo "S1 = " $1 
# echo "S2 = " $2
# echo "S3 = " $3fd -H -g "$SEARCH_FILE" "$SARCH_DIR" | xargs rg -. "$SEARCH_KEYWORD"

v3.0版本

emacs fd_rg_v3.0.sh

# v3.0
# 检查参数数量是否至少为3(第一:目录, 第二:文件; 第三:字符串)
if [ "$#" -lt 2 ]; thenecho "Usage: $0 Input your [dir(option)], [*.file], [keyword]."exit 1
fi# 定义参数变量
SARCH_DIR=$1
SEARCH_FILE=$2
SEARCH_KEYWORD=$3if [ $# -eq 2 ]; then  fd -H -g "$1" -g "$(pwd)" | xargs rg -. "$2"
elif [ $# -eq 3 ]; then  fd -H -g "$SEARCH_FILE" -g "$SARCH_DIR" | xargs rg -. "$SEARCH_KEYWORD"
fi#echo "S1 = " $1 
#echo "S2 = " $2
#echo "S3 = " $3
#echo "pwd =" $(pwd)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/541459.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源堡垒机Jumpserver安装教程

前言:堡垒机的应用场景 公司内有若干台服务器,既有windows的也有linux的, 提供有ERP,OA,Web,报表等等各种服务,往往需要远程登录到服务器上去做运维,但如果给root或者administrator权限,很容易出现不知道谁操作了的问题.如果不同人设置不同账号,又账号过多,权限不足等等其他问题…

Docker 安装部署 ORACLE 11g数据库

Docker 安装部署 ORACLE 11g数据库 背景: ​ 最新在开发数据中台数据接入模块,其中设计很多数据类型,包括ORACLE ,因为是测试使用,想着快速部署测试,于是使用Docker 部署 Oracle , 生产环境不建议使用Doc…

js-循环返回多条数据,每条数据文本超过三行进行展开与收起的实现

1.基本需求 返回多条数据,每条数据在一定宽度的盒子内,文本超过三行进行文本的展开与收起 2.实现逻辑 对于返回的每条数据添加属性expend:false来在循环中进行对于展开收起的判断。 动态计算盒子宽度随着分辨率的变化而变化的值boxWidth。获…

代码随想录刷题day24|回溯理论基础组合问题

文章目录 day24学习内容一、修剪二叉搜索树1.1、什么是回溯法1.2、递归与回溯1.3、回溯法的效率1.4、回溯法解决的问题类型1.5、如何理解回溯法1.6、回溯算法模板 二、组合问题2.1、思路2.2、正确写法-没有剪枝2.2.1、为什么不能写i < n2.2.2、为什么不能写startIndex02.2.3…

helm部署hadoop

&#xff08;作者&#xff1a;陈玓玏&#xff09; 参考helm仓库的文档&#xff1a;https://artifacthub.io/packages/helm/apache-hadoop-helm/hadoop helm helm repo add pfisterer-hadoop https://pfisterer.github.io/apache-hadoop-helm/ helm install hadoop pfistere…

LeetCode230题:二叉搜索树中第K小的元素(python3)

代码思路&#xff1a;二叉搜索树中序遍历为递增序列。 class Solution:def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:def dfs(root):if not root:returndfs(root.left)if self.k 0:returnself.k - 1if self.k 0:self.res root.valdfs(root.right)se…

Gitee 实战配置

一、Gitee 注册帐号 官网:https://gitee.com点击注册按钮。填写姓名。填写手机号。填写密码。点击立即注册按钮二、安装GIT获取公钥 1.官网下载git下载地址:https://git-scm.com/download/win 2.安装git,双击运行程序,然后一直下一步,直至完成。 3.安装完成后,在 CMD 命令…

蓝桥杯 - 大石头的搬运工 C++ 前缀和 算法 附Java python

题目 思路和解题方法 这段代码的目标是计算给定点集的最小总移动成本&#xff0c;使得所有点都在同一直线上。它通过计算每个点左边和右边的移动成本&#xff0c;然后在所有可能的分割点中选择最小成本。具体步骤如下&#xff1a; 读取输入的点集&#xff0c;每个点表示为 (y, …

[AIGC] Spring Boot中的切面编程和实例演示

切面编程&#xff08;Aspect Oriented Programming&#xff0c;AOP&#xff09;是Spring框架的关键功能之一。通过AOP&#xff0c;我们可以将代码下沉到多个模块中&#xff0c;有助于解决业务逻辑和非业务逻辑耦合的问题。本文将详细介绍Spring Boot中的切面编程&#xff0c;并…

【常规】使用bat批量修改文件名

文章目录 一、目标二、主要思路三、步骤&#xff08;一&#xff09;进入目标文件夹&#xff08;二&#xff09;获取所有目标文件名称1、创建文本文档&#xff08;txt格式&#xff09;2、写代码3、生成bat文件4、执行bat文件&#xff0c;获取原文件名列表&#xff1a; &#xff…

redis如何保证缓存一致性

方式一&#xff1a;先更新数据库&#xff0c;再更新缓存场景 当有两个线程A、B&#xff0c;同时对一条数据进行操作&#xff0c;一开始数据库和redis的数据都为tony&#xff0c;当线程A去修改数据库&#xff0c;将tong改为allen&#xff0c;然后线程A在修改缓存中的数据&#x…

实验一:关联规则 (见U盘)

实验名称 关联规则 实验时间 3月 14 日星期 四 第3.4节 实验目的 利用 Python 对关联规则算法进行调用。能够使用 Python 调用关联规则算法。首先使用apriori ,fpgrowth 或者 fpmax 函数来找出频繁项集&#xff0c;然后使用 association_rules …