当前位置: 首页 > news >正文

Linux Shell 脚本编程学习之【第3章 正则表达式 (第二部分) grep命令】

第3章 正则表达式 (第二部分)

  • 4 grep命令
    • 4.1 基本用法
    • 4.2 参考命令
      • 4.2.1 双引号
      • 4.2.2 -c 输出匹配行数
      • 4.2.3 -h 或 -l 不显示或只显示文件名
      • 4.2.4 -s 不显示错误信息
      • 4.2.5 -r 递归显示本级目录及下级目录
      • 4.2.6 -w 匹配完整词 -x 匹配完整行
      • 4.2.7 -q 退出状态
      • 4.2.8 -b 距文件头部的偏移量
      • 4.2.9 -E -F
    • 4.3 grep与正则表达式
      • 4.3.1 匹配行首
      • 4.3.2 查找空白行(^)
      • 4.3.3 设置大小写(-n)
      • 4.3.4 转义符(\)
      • 4.3.5 POSIX字符
      • 4.3.6 精确匹配
      • 4.3.7 或字符
    • 4.4 grep 命令族简介

4 grep命令

1、文本搜索工具
2、GREP 是Global search Regular Expression and Print out the line的简称,即全面搜索正则表达式并把行打印出来。
3、grep命令的模式十分灵活,可以是字符串,也可以是变量,还可以是正则表达式。模式中包含空格,则必须用双引号括起来。

4.1 基本用法

选 项意 义
-c只输出匹配行的数量
-i搜索时忽略大小写
-h查询多文件时不显示文件名
-I只列出符合匹配的文件名,而不列出具体的匹配行
-n列出所有的匹配行,并显示行号
-s不显示不存在或无匹配文本的错误信息
-v显示不包含匹配文本的所有行
-w匹配整词
-x匹配整行
-r递归搜索,不仅搜索当前工作目录,而且搜索子目录
-q禁止输出任何结果,以退出状态表示搜索是否成功
-b打印匹配行距文件头部的偏移量,以字节为单位
-0与-b选项结合使用,打印匹配的词距文件头部的偏移量,以字节为单位
-E支持扩展的正则表达式
-F不支持正则表达式,按照字符串的字面意思进行匹配

4.2 参考命令

命令模式指的是将命令封装成一个整体。

4.2.1 双引号

// 含空格时使用双引号
[rhel@localhost ~]$ grep -i "user for" /etc/passwd
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin

4.2.2 -c 输出匹配行数

// -c输出匹配的行数[rhel@localhost ~]$ grep -c -i "user for" /etc/passwd
3// -n 列出匹配项并加上行号。
[rhel@localhost ~]$ grep -n -i "user for" /etc/passwd
16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
19:colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
27:geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin

4.2.3 -h 或 -l 不显示或只显示文件名

// -h 显示文件名 -l 只列出符合规范的文件名
[rhel@localhost etc]$ grep -i home passwd*
passwd:rhel:x:1000:1000:rhel:/home/rhel:/bin/bash
passwd:db2inst1:x:1001:901::/home/db2inst1:/bin/bash
passwd:db2fenc1:x:1002:902::/home/db2fenc1:/bin/bash
passwd:db2as:x:1003:903::/home/db2as:/bin/bash
passwd-:rhel:x:1000:1000:rhel:/home/rhel:/bin/bash
passwd-:db2inst1:x:1001:901::/home/db2inst1:/bin/bash
passwd-:db2fenc1:x:1002:902::/home/db2fenc1:/bin/bash
[rhel@localhost etc]$ grep -h home passwd*
rhel:x:1000:1000:rhel:/home/rhel:/bin/bash
db2inst1:x:1001:901::/home/db2inst1:/bin/bash
db2fenc1:x:1002:902::/home/db2fenc1:/bin/bash
db2as:x:1003:903::/home/db2as:/bin/bash
rhel:x:1000:1000:rhel:/home/rhel:/bin/bash
db2inst1:x:1001:901::/home/db2inst1:/bin/bash
db2fenc1:x:1002:902::/home/db2fenc1:/bin/bash
[rhel@localhost etc]$ grep -l home passwd*
passwd
passwd-

4.2.4 -s 不显示错误信息

[rhel@localhost etc]$ grep user else passwd
grep: else: 没有那个文件或目录
passwd:saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
passwd:radvd:x:75:75:radvd user:/:/sbin/nologin
passwd:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
passwd:usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
passwd:qemu:x:107:107:qemu user:/:/sbin/nologin
passwd:rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin[rhel@localhost etc]$ grep -s user else passwd
passwd:saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
passwd:radvd:x:75:75:radvd user:/:/sbin/nologin
passwd:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
passwd:usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
passwd:qemu:x:107:107:qemu user:/:/sbin/nologin
passwd:rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

4.2.5 -r 递归显示本级目录及下级目录

[root@localhost etc]# grep  auth pa*
grep: pam.d: 是一个目录
passwd:saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
passwd-:saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@localhost etc]# grep -s auth pa*
passwd:saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
passwd-:saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@localhost etc]# grep -r auth pa*
pam.d/config-util:auth          sufficient      pam_rootok.so
pam.d/config-util:auth          sufficient      pam_timestamp.so
pam.d/config-util:auth          include         system-auth
pam.d/config-util:session               optional        pam_xauth.so

4.2.6 -w 匹配完整词 -x 匹配完整行

[root@localhost etc]# grep tcpd* passwd
tcpdump:x:72:72::/:/sbin/nologin
[root@localhost etc]# grep -w tcpd* passwd
[root@localhost etc]# 
[root@localhost etc]# grep tcpd* passwd
tcpdump:x:72:72::/:/sbin/nologin[root@localhost etc]# grep -x tcpdump passwd
[root@localhost etc]# grep -x tcpdump:x:72:72::/:/sbin/nologin passwd
tcpdump:x:72:72::/:/sbin/nologin

4.2.7 -q 退出状态

grep命令后一旦加上-q选项, grep将不再输出任何结果,而是以退出状态表示搜索是否成功,退出状态0表示搜索成功,退出状态1表示未搜索到满足模式的文本行,退出状态2表示命令或程序由于错误而未能执行。

[root@localhost etc]# grep -q -x tcpdump:x:72:72::/:/sbin/nologin passwd
[root@localhost etc]# echo $?
0           --退出状态0
[root@localhost etc]# grep -q -x tcpdump passwd
[root@localhost etc]# echo $?
1           --退出状态1
[root@localhost etc]# grep -q -s -x tcpdump passwdmmm
[root@localhost etc]# echo $?
2           --退出状态2

4.2.8 -b 距文件头部的偏移量

grep-b 选项打印匹配行距文件头部的偏移量,以字节为单位。
如果在-b 选项后再加上-o 选项 ,grep命令将打印匹配的词距文件头部的偏移量。

[root@localhost etc]# grep -b bash passwd
0:root:x:0:0:root:/root:/bin/bash
2016:rhel:x:1000:1000:rhel:/home/rhel:/bin/bash
2059:db2inst1:x:1001:901::/home/db2inst1:/bin/bash
2105:db2fenc1:x:1002:902::/home/db2fenc1:/bin/bash
2151:db2as:x:1003:903::/home/db2as:/bin/bash
[root@localhost etc]# grep -b -o bash passwd
27:bash
2054:bash
2100:bash
2146:bash
2186:bash
[root@localhost etc]# 

4.2.9 -E -F

grep命令的-E 和-F 选项分别等价于grep命令族中的egrep和 fgrep命令

4.3 grep与正则表达式

4.3.1 匹配行首

// 匹配以n开头的行首
[root@localhost etc]# grep ^n passwd
nobody:x:99:99:Nobody:/:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@localhost etc]# 

4.3.2 查找空白行(^)

// 统计空白行的数量
[root@localhost etc]# grep -c ^$ profile
11// 统计非空白行行数
[root@localhost etc]# grep -c ^[^$] profile
65

4.3.3 设置大小写(-n)

[root@localhost etc]# grep -i RHEL passwd
rhel:x:1000:1000:rhel:/home/rhel:/bin/bash
[root@localhost etc]# grep -n [Rr]hel passwd
40:rhel:x:1000:1000:rhel:/home/rhel:/bin/bash

4.3.4 转义符(\)

[root@localhost etc]# grep cj\.name makedumpfile.conf.sample
##              erase cj.name[root@localhost rhel]# grep '\-\{5\}' 1.sh
-----dddfsdf
-----sdfsdfasdfaew

4.3.5 POSIX字符

为了保持不同国家的字符编码的一致性, POSIX(Portable Operating System Interface)增 加了特殊的字符类,以[:classname]的格式给出, grep 命令支持POSIX 字符类

类 名意 义
[:upper:]表示大写字母[A~Z]
[:lower:]表示小写字母[a~z]
[:digit:]表示阿拉伯数字[0~9]
[:alnum:]表示大小写字母和阿拉伯数字[0~9a~zA~Z]
[:space:]表示空格或Tab键
[:alpha:]表示大小写字母[a~zA~Z]
[:cntrl:]表示Ctrl键
[:graph:]或[:print:]表示ASCIⅡI码33~126之间的字符
[:xdigit:]表示16进制数字[0~9 A~Fa~f]

//利用POSIX 字符类搜索以大写字母开头的行
[root@zawu  globus]#  grep  ^[[:upper:]]  00.pem
This is a Certificate Request file:
It   should   be   mailed   to   xd  nidseu edu cn
Certificate Subject:         _            .      .
The above string is known as your user certificate subject, and it To install this user certificate, please save this e-mail message If you have any questions about the certificate contactMIIB4ZCCAUwCAQAwcTENMAsGA1UEChMER3JpZDETMBEGA1UECxMKR2xvYnVzVGCxMKc2V1LmVkdS5jbjEPMAOGA1UEAxMGZ2XvYnVZMIGfMAOGCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCw50H88r7sAGjQGLZTmMxTiw9AgDqppBMhP6Fg3eJTqBvqBdhaYTRtleSBT/AJUi3rTDRIABJPgu8cZkwb1AE8uEJSeCKwgk3J9QHK2NcZXwIDAQABBAIWADANBgkqhkiG9wOBAQQFAAOBgQBoHRUaaB/Tyu+LuALwnT3Muw/OjDIYxc5aYaA4dwCB6/2yVYyfmyRCNox3rIsyUvqL9p81d/hpNiAB/0OazMBialq5Gcpaansd
[rootezawu   globus]#//搜索以空格开头文本行
[rootazawu  globus]#  grep  ^[[:space:]]  00.pem
/0=Grid/OU=GlobusTest/OU=simpleCA-seugrid1 .seu .edu .cn/OU=seu .edu .cn/CN=globus
You need not edit this message in any way . Simply
save  this  e-mail  message  to  the  file.

4.3.6 精确匹配

[root@localhost rhel]# grep the 1.sh
Linel:there   are   four   lines   in   this   file 
Line2:this   the   line   2
Line3:this    is    another    line
[root@localhost rhel]# grep "\<the\>" 1.sh 
Line2:this   the   line   2[root@localhost rhel]# grep -w the 1.sh
Line2:this   the   line   2

4.3.7 或字符

字符“ | ”是扩展的正则表达式中定义的, grep需要加上-E 选项才能支持它,下面给出grep命令使用“ | ”字符的例子。

[root@localhost rhel]# grep -E "there | another " 1.sh
Linel:there   are   four   lines   in   this   file 
Line3:this    is    another    line

4.4 grep 命令族简介

Linux 系统支持三种形式的grep命令,通常将这三种形式的 grep命令称为 grep命令族, 这三种形式具体为:
● grep: 标准grep 命令,支持基本正则表达式,上面两小节已经对此命令进行了详细 的讨论。
● egrep: 扩展grep 命令,支持基本和扩展正则表达式。
● fgrep: 快速grep 命令,不支持正则表达式,按照字符串的字面意思进行匹配。
egrep 命令与 grep -E 等价, fgrep 命令与 grep -F 等价,在某些Linux 发行版中, egrep 和fgrep都是grep命令的别名,分别将其符号链接到grep-E 和 grep-F 命令。

[root@localhost rhel]# egrep  "there | another " 1.sh
Linel:there   are   four   lines   in   this   file 
Line3:this    is    another    line
[root@localhost rhel]# fgrep another 1.sh
Line3:this    is    another    line

相关文章:

Linux Shell 脚本编程学习之【第3章 正则表达式 (第二部分) grep命令】

第3章 正则表达式 &#xff08;第二部分&#xff09; 4 grep命令4.1 基本用法4.2 参考命令4.2.1 双引号4.2.2 -c 输出匹配行数4.2.3 -h 或 -l 不显示或只显示文件名4.2.4 -s 不显示错误信息4.2.5 -r 递归显示本级目录及下级目录4.2.6 -w 匹配完整词 -x 匹配完整行4.2.7 -q 退出…...

大语言模型LLM

目录 一、语言模型的发展 语言模型&#xff08;Language Model&#xff0c;LM&#xff09;目标是建模自然语言的概率分布&#xff0c;具体目标是构建词序列w1,w2,...,wm的概率分布&#xff0c;即计算给定的词序列作为一个句子出现可能的大小P(w1w2...wm)。但联合概率P的参数量…...

自学网络安全(黑客)的误区

前言 网络安全入门到底是先学编程还是先学计算机基础&#xff1f;这是一个争议比较大的问题&#xff0c;有的人会建议先学编程&#xff0c;而有的人会建议先学计算机基础&#xff0c;其实这都是要学的。而且这些对学习网络安全来说非常重要。 一、网络安全学习的误区 1.不要…...

@Conditional

Conditional Conditional 是 spring framework 中提供的一个条件注解&#xff0c;&#xff0c;满足条件就注入&#xff0c;不满足就不注入ioc Condtional 需要和 Condition接口 一起用&#xff1a; 返回true注入&#xff0c;返回false不注入&#xff0c;&#xff0c; 里面有一…...

【Linux】网络基础之TCP协议

目录 &#x1f308;前言&#x1f338;1、基本概念&#x1f33a;2、TCP协议报文结构&#x1f368;2.1、源端口号和目的端口号&#x1f369;2.2、4位首部长度&#x1f36a;2.3、32位序号和确认序号&#xff08;重点&#xff09;&#x1f36b;2.4、16位窗口大小&#x1f36c;2.5、…...

Java设计模式之装饰器(Decorator)模式

装饰器&#xff08;Decorator&#xff09;设计模式允许动态地将新功能添加到对象中&#xff0c;同时又不改变其结构。 什么是装饰器模式 装饰器&#xff08;Decorator&#xff09;模式通过将对象进行包装&#xff0c;以扩展其功能&#xff0c;而不需要修改其原始类。装饰器模…...

element ui树组件render-content 树节点的内容区的渲染另一种方式

直接上代码吧,不用h的写法。 <el-tree :data"data" node-key"id" default-expand-all :expand-on-click-node"false" :props"defaultProps":render-content"renderContentTree" node-click"handleNodeClick"&g…...

html a标签换行显示

文章目录 用css display属性不用css&#xff0c;可以用<br>标签换行示例 用css display属性 可以使用CSS的display属性来实现多个a标签每行显示一个。 HTML代码&#xff1a; <div class"link-container"><a href"#">Link 1</a>…...

关于Redis-存Long取Integer类型转换错误的问题

背景 最近遇到了两个Redis相关的问题&#xff0c;趁着清明假期&#xff0c;梳理整理。 1.存入Long类型对象&#xff0c;在代码中使用Long类型接收&#xff0c;结果报类型转换错误。 2.String对象的反序列化问题&#xff0c;直接在Redis服务器上新增一个key-value&#xff0c…...

设计模式一:简单工厂模式(Simple Factory Pattern)

简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一个通用的接口来创建各种不同类型的对象&#xff0c;而无需直接暴露对象的创建逻辑给客户端。 简单工厂的三个重要角色&#xff1a; 工厂类&#xff08;Factory Class&…...

如何利用plotly和geopandas根据美国邮政编码(Zip-Code)绘制美国地图

对于我自己来说&#xff0c;该需求源自于分析Movielens-1m数据集的用户数据&#xff1a; UserID::Gender::Age::Occupation::Zip-code 1::F::1::10::48067 2::M::56::16::70072 3::M::25::15::55117 4::M::45::7::02460 5::M::25::20::55455 6::F::50::9::55117我希望根据Zip-…...

ceph集群搭建

文章目录 理论知识具体操作搭建ceph本地源yum源及ceph的安装配置NTP&#xff08;解决时间同步问题&#xff09;部署ceph自定义crush 理论知识 Ceph是一个分布式存储系统&#xff0c;并且提供了文件、对象、块存储功能。 Ceph集群中重要的守护进程有&#xff1a;Ceph OSD、Cep…...

前端密码加密 —— bcrypt、MD5、SHA-256、盐

&#x1f414; 前期回顾悄悄告诉你&#xff1a;前端如何获取本机IP&#xff0c;轻松一步开启网络探秘之旅_彩色之外的博客-CSDN博客前端获取 本机 IP 教程https://blog.csdn.net/m0_57904695/article/details/131855907?spm1001.2014.3001.5501 在前端密码加密方案中&#xff…...

汽车UDS诊断深度学习专栏

1.英文术语 英文术语翻译Diagnostic诊断Onboard Diagnostic 在线诊断 Offboard Diagnostic离线诊断Unified diagnostic service简称 UDS 2.缩写表 缩写解释ISO国际标准化组织UDSUnified diagnostic service&#xff0c;统一的诊断服务ECU电控单元DTC 诊断故障码 ISO14229UD…...

macOS 下安装brew、nvm

1、brew&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" brew -v 查看版本 示例&#xff1a; 安装jdk brew search jdk 查询可用的jdk版本 brew install openjdk11 安装制定版本jdk 更换源&#xff1…...

【云原生】Kubernetes工作负载-StatefulSet

StatefulSet StatefulSet 是用来管理有状态应用的工作负载 API 对象 StatefulSet 用来管理某 Pod 集合的部署和扩缩&#xff0c; 并为这些 Pod 提供持久存储和持久标识符 和 Deployment 类似&#xff0c; StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同…...

Java:方法的重载

方法重载 为什么需要方法重载 在使用方法的过程中我们可能会遇到以下如同例子的情形&#xff1a; ​ ​ public class method1 {public static void main(String[] args) {int a1 10;int b1 20;double ret1 add(a1, b1);System.out.println("ret1 " ret1);do…...

7.react useCallback与useMemo函数使用与常见问题

react useCallback与useMemo函数使用与常见问题 useCallback返回一个可记忆的函数&#xff0c;useMemo返回一个可记忆的值&#xff0c;useCallback只是useMemo的一种特殊形式。 那么这到底是什么意思呢&#xff1f;实际上我们在父子通信的时候&#xff0c;有可能传递的值是一…...

Sentinel限流中间件

目录 介绍 Sentinel 的特征 Sentinel 的组成 实战使用 简单实例 配置本地控制台 使用可视化ui配置简单流控 配置异步任务限流 使用注解定义限流资源 SpringCloud整合Sentinel 简单整合 并发线程流控 关联模式 整合openFeign使用 介绍 随着微服务的流行&#xff0…...

使用ajax进行前后端交互的方法

使用ajax进行前后端交互的方法&#xff1a;&#xff08;我只测试通了json对象作为参数的方式&#xff0c;其他方式我没有测试通过&#xff09; 1、前端方法&#xff1a; 传参方式&#xff1a;POST 请求类型&#xff1a;json对象 响应类型&#xff1a;json对象 function test() …...

Phi-4-mini-reasoning应用场景:AI竞赛教练系统自动出题与解析

Phi-4-mini-reasoning应用场景&#xff1a;AI竞赛教练系统自动出题与解析 1. 引言&#xff1a;当AI遇见竞赛训练 想象一下&#xff0c;一位数学竞赛教练每天需要&#xff1a; 设计不同难度的题目准备详细的解题步骤针对学生错误提供个性化解析不断更新题库保持新鲜度 传统方…...

Qwen3.5-9B训练复现:从SFT到RLHF的全流程开源实践指南

Qwen3.5-9B训练复现&#xff1a;从SFT到RLHF的全流程开源实践指南 1. 项目概述 Qwen3.5-9B是一个拥有90亿参数的开源大语言模型&#xff0c;具备强大的逻辑推理、代码生成和多轮对话能力。该模型支持多模态理解&#xff08;图文输入&#xff09;和长上下文处理&#xff08;最…...

openclaude:模型接入 Code 工具链

作为一名长期关注人工智能工程化落地的开发者&#xff0c;我深知本地大模型在隐私保护和成本控制上的优势&#xff0c;但往往苦于缺乏像 Claude Code 那样强大的工具调用能力。很多时候&#xff0c;我们拥有强大的模型&#xff08;如 DeepSeek、Ollama 本地部署&#xff09;&am…...

OpenClaw飞书机器人实战:Qwen2.5-VL-7B多模态对话集成

OpenClaw飞书机器人实战&#xff1a;Qwen2.5-VL-7B多模态对话集成 1. 为什么选择OpenClaw飞书Qwen2.5-VL组合 去年我在团队内部尝试搭建智能助手时&#xff0c;发现现成的SaaS工具要么功能受限&#xff0c;要么需要将敏感数据上传到第三方服务器。直到遇到OpenClaw这个开源框…...

2026年最新codex 第三方 api 配置指南

真正决定 Codex 能不能顺利进入项目的&#xff0c;通常不是 npm 命令有没有跑完&#xff0c;而是 codex 第三方 api 是否配完整。很多人在 openai/codex 安装结束后马上就碰到 401、请求超时、模型不可用&#xff0c;甚至一直过不了认证&#xff0c;这类问题大多都落在 ~/.code…...

G-Helper终极指南:华硕笔记本轻量级控制工具完全教程

G-Helper终极指南&#xff1a;华硕笔记本轻量级控制工具完全教程 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sca…...

百考通:AI精准赋能任务书生成,让科研与项目启动更高效

在学术研究、课程设计与项目开发的起步阶段&#xff0c;一份规范、清晰的任务书是指引方向的核心纲领。但从选题构思到内容撰写&#xff0c;往往让研究者与学生陷入困境&#xff1a;选题迷茫、逻辑混乱、要求表述模糊&#xff0c;严重拖慢项目推进节奏。百考通&#xff08;http…...

2026 codex 大模型 api 配置指南:auth.json、config.toml 与 401/超时排查

当 codex --version 已经能正常输出&#xff0c;很多人会以为接下来只剩下提问和改代码。但真正决定 Codex 能不能顺利进入项目的&#xff0c;往往是 codex 大模型 api 有没有按要求接好&#xff1a;只要 auth.json、config.toml 或网关地址有一点偏差&#xff0c;就可能马上碰…...

Linux驱动开发中的Devres资源管理机制解析

1. Linux驱动开发中的资源管理痛点 在Linux驱动开发中&#xff0c;资源管理一直是个令人头疼的问题。想象一下这样的场景&#xff1a;你正在编写一个摄像头驱动&#xff0c;需要依次申请内存、时钟、DMA通道、中断等多种资源。如果其中任何一步失败&#xff0c;都必须小心翼翼地…...

计算机毕业设计springboot长春的地铁综合服务管理系统 基于SpringBoot的城市轨道交通智慧运维管理平台 SpringBoot框架下的地铁运营调度与设备管控系统

计算机毕业设计springboot长春的地铁综合服务管理系统 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着城市化进程的加速推进&#xff0c;长春市作为东北地区的重要交通枢纽&…...