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.mzph.cn/news/755360.shtml

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

相关文章

《探索AI辅助研发的未来之路》

在当今科技飞速发展的时代,人工智能(AI)已经逐渐渗透到各个领域,其中之一便是研发领域。AI辅助研发正以惊人的速度改变着我们对于创新和发现的理解。本文将从技术进展、行业应用、挑战与机遇、未来趋势、法规影响以及人才培养等方…

Vcenter 6.7部署文档

下载VMware-VCSA-all-6.7.0 iso文件 找到installer文件夹 ## 找到win32目录 点击installer 接下来按照截图一步步安装 开始进行安装 进度部署第二阶段 配置一个内部NTP 服务器 配置VCenter的登录用户名和密码 ## vcenter配置开始

c++ 元二分搜索 | 单边二分查找(Meta Binary Search | One-Sided Binary Search)

元二分搜索(Steven Skiena 在《算法设计手册》第 134 页中也称为单边二分搜索)是二分搜索的一种修改形式,它以增量方式构建数组中目标值的索引。与普通二分搜索一样,元二分搜索需要 O(log n) 时间。 元二分搜索,也称为…

Spring Data访问Elasticsearch----实体回调Entity Callbacks

Spring Data访问Elasticsearch----实体回调Entity Callbacks 一、实现实体回调二、注册实体回调三、存储特定的EntityCallbacks Spring Data基础结构提供了钩子,用于在调用某些方法之前和之后修改实体。这些所谓的EntityCallback实例提供了一种方便的方式来检查并可…

适用于 Windows电脑的 iPad 数据恢复软件

如何在 Windows 11/10/8/7 上从 iPad 恢复丢失的数据?其实很简单。您只需在 Windows 11/10/8/7 上下载并安装 iPad 数据恢复软件。然后您可以运行该软件扫描您的 iPad 并查找已删除/丢失的数据。iPad 中的 iOS 数据(包括消息、聊天记录、联系人、照片和视…

类和对象 java 要点总结

# 类和对象 - 成员变量 有默认值0 - 成员方法 - 类名:大驼峰 - rename refactor 改类名 - new 实例化对象 - this 当前对象的引用 - this共有2种使用方式: - this.data 访问当前对象的实例成员变量 - this.func() 访问当前对象的实例成员方法 - t…

Vue学习日记 Day7 —— json-server工具、基于VueCli自定义创建项目、postcss插件

一、前一天Vuex总结 1、state作用:存放数据定义:state:{//数据 }使用://放在data下(1)根节点直接访问this.$store.state.数据名(2)模块直接访问this.$store.state.模块名.数据名(3)根节点辅助函数mapState([所需要的数据])(4)模块辅助…

CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记

CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记 文章目录 CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记前记获取键值或下标的方式获取属性的方式 Level 1 no wafLevel 2 bl[\{\{]Level 3 no waf and blindLevel 4 bl[[, ]]获取键值或下标 Level 5 bl[\, "]Level 6 bl[_]Level …

Java安全基础 必备概念理解

Java安全基础 关键概念汇总 文章目录 Java安全基础 关键概念汇总前置知识1.构造器this以及包的使用2.继承3.重写/ 重载 / super4.多态5.区分和equals方法6.toString的使用7.Object的概念8.static,final,代码块static代码块final 9.动态代理10.类的动态加载1)类加载器含义&#…

【教程】APP加固的那些小事情

摘要 APP加固是保护APP代码逻辑的重要手段,通过隐藏、混淆、加密等操作提高软件的逆向成本,降低被破解的几率,保障开发者和用户利益。本文将介绍APP加固常见失败原因及解决方法,以及处理安装出现问题的情况和资源文件加固策略选择…

【InternLM 笔记】OpenXLAB浦源的基本操作

OpenXLab网址 网址:OpenXLab浦源 模型 创建模型 页面右上角选择【创建】然后选择【创建模型】 创建模型的页面如下 感觉页面中的提示信息填写相应的内容,全部填完后点页面下方的【立即创建】完成模型的创建 模型上传 安装所需的工具 apt install …

目标检测——玉米叶感染数据集

一、重要性 首先,玉米作为世界上重要的粮食作物之一,其生长状况直接影响到粮食产量和粮食安全。玉米叶感染是玉米生长过程中常见的病害之一,会导致玉米叶片出现肿胀、皱缩、扭曲变形等症状,严重时甚至可能形成瘤状物。因此&#…

MySQL特殊函数

MySQL提供了一系列特殊函数,用于执行各种操作,包括数学运算、字符串处理、日期和时间计算等。下面是一些常用的MySQL特殊函数及其样例: 1. **数学函数**: - ABS(x):返回x的绝对值。 - 样例:SELECT AB…

plsql如何添加索引?

索引是对表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。索引的一个主要目的就是加快检索表中数据的方法&#xf…

【LIMS】微服务

目录 一、服务解决方案-Spring Cloud Alibaba1.1选用原因(基于Spring Cloud Alibaba的试用场景)1.2 核心组件使用前期规划 部署 nacos部署 mino使用JavaFreemarker模板引擎,根据XML模板文件生成Word文档使用JavaFlowable 工作流引擎前端 -vue…

Python实现视频转音频、音频转文本加文本实体识别

文章目录 概述必备第三方库视频转音频音频转文字完整代码命名实体识别NER注意点概述 本教程希望可以识别出目前活跃的视频平台(例如抖音、快手等)中视频文案中蕴含的实体信息,首先有两条技术路径: 直接提取视频帧,之后实现逐帧的字幕识别,最后合并为视频文案。 优点:准…

为什么Python语言那么受欢迎呢?

Python语言受到广泛欢迎的原因有很多。首先,让我们来了解一下Python语言的背景和历史。Python是由Guido van Rossum在上世纪90年代初开发的一种高级编程语言。自从他在1989年发布第一个Python解释器以来,Python一直在不断发展和完善。其简洁、易读的语法…

js获取年月日

const date new Date()const options { year: numeric, month: 2-digit, day: 2-digit }const dateString date.toLocaleDateString(zh-CN, options)const [year, month, day] dateString.split(/)console.log(year, month, day) 人工智能学习网站: https://ch…

C++ 中的 Pimpl 惯用法

Pimpl 是一种常见的 C 设计模式,用于隐藏类的实现细节,从而减少编译依赖和提高编译速度。本文将通过一个较为复杂的例子,展示如何使用智能指针(如 std::unique_ptr)来实现 Pimpl 惯用法。 参考: Pimpl 用法

ArcGIS Pro 和 ArcMap 10个不同

ArcGIS Pro 和 ArcMap 都是 ESRI 开发的地理信息系统 (GIS) 软件,但它们在设计、功能和用户体验方面有一些显著的区别。以下是 ArcGIS Pro 和 ArcMap 之间的 10 个主要不同点: 界面和用户体验: ArcGIS Pro 采用了现代化的、基于Ribbon的界面,与 Microsoft Office 应用程序相…