grep与nm命令的应用
在Linux中,grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。利用这些返回值就可以进行一些自动化的文本处理工具。grep命令的语法如下:
grep 参数<配置> 文件/文件夹
其中参数定义如下:
(1)-a:不忽略二进制的数据。
(2)-b:打印匹配行距离文件头部的偏移量,以字节为单位。
例:grep -r -b vendor_ai_cust_set_next_process_mctrl --exclude-dir=.svn
图4-1 grep -b示例
(3)-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数,比如一行有两个被匹配到,但输出只有一个。
例:grep -r -c vendor_ai_cust_set_next_process_mctrl
图4-2 grep -c示例
(4)-E:将样式为延伸的正则表达式来使用,如匹配文件中多个字符。
图4-3 grep -E示例
(5)-F:将样式视为固定字符串的列表,字符串中可以有特殊符号,例如{}、[]等。
图4-4 grep -F示例
(6)-G:使用基本规则表达式解释匹配模式,该参数为默认值。
(7)-h:查询时不显示文件名。
图4-5 grep -h示例
(8)-H:查询时显示文件名,加与不加无区别,与-h相反。
(9)-i:忽略关键字符的大小写。(跟-y参数相同)。
(10)-l:对多文件搜索关键字符时只显示文件名。
(11)-L:对多文件搜索关键字符时,只显示不匹配关键字符的文件名。
(12)-n:显示匹配结果所在行号。
(13)-q:不显示任何信息。用于if逻辑判断,安静模式,不打印任何标准输出。如果有匹配的内容则立即返回状态值0。
图4-6 grep -q示例
(14)-d 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。-d后面跟的是进行的动作,一般是"grep -d read"或"grep -d recure "或"grep -d skip"。其中,read 为在当前目录查找;recure 为所有递归子目录;skip 为忽略子目录
(15)-R/-r 此参数的效果和指定"-d recurse"参数相同。
(16)-s 当搜索关键字符,不显示不存在或无匹配文本的错误信息。使用方式:"grep -s 关键字符 filename"。
图4-7 grep -s示例
(17)-v 反转或过滤搜索,即过滤出来那些不匹配关键字符的行。使用方式:"grep -v 关键字符"。
(18)-w 精准搜索关键字符,即,只匹配单词,不匹配字符串。
图4-8 grep -w示例
(19)-x 只显示整行都是关键字符的行。使用方式:"grep -x 关键字符",行匹配。
(20)-y 忽略关键字符的大小写。(跟-i参数相同)。
(21)-A<行数>:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行。
(22)-B<行数>:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行。
(23)-C<行数>:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行。
图4-9 grep -C示例
(24) -e 一次只能传一个匹配值,想对于-E,-E则可以采用“|”进行查询。
图4-10 grep -e示例
(25)-f 从文件中取得关键字符,以文件匹配文件。
例:grep -f b.txt a.txt 以b.txt每一行为元素,在a.txt中进行匹配,如过行元素相同,则会标红,如下图所示。
图4-11 grep -f示例
(26)--exclude-from = FILE:在文件中编写通配方案,grep将不会到匹配方案中文件名的文件去查找匹配内容。
(27)--exclude-dir = DIR:匹配一个目录下的不少内容同时还要让一些子目录不接受匹配,就使用此选项。
(28)--include = GLOB:仅搜索其基本名称与GLOB匹配的文件(使用--exclude下所述的通配符匹配)。
-
- Linux中nm的命令使用
nm命令的语法如下所示:
$ nm [options(s)] [file(s)]
其中,[file(s)]中可以给出多个文件,如果没有指定文件名,则默认文件是a.out。
(1)-A/-o:在输出时加上文件名。
图4-12 nm -A/-o示例
(2)-a:列出obj文件中所有的符号,包括debug所使用的符号,否则默认情况下不显示调试用的符号。
图4-13 nm -a示例
(3)-B:BSD码显示,默认为8421码显示。
(4)-C或--demangle[=style]:对低级符号名称进行解码,C++文件需要添加。
(5)-D 或--dynamic:显示动态符号而不显示普通符号,一般用于动态库。
(6)-f format或--format=format:指定输出格式,可以使用 nm -f sysv 查看变量所在的节区。
图4-14 nm -f 示例
(7)-g或--extern-only:仅显示外部符号,一般用于对静态库的函数查询。
图4-15 nm -g示例
(8)-h或--help:国际惯例,显示命令的帮助信息。
(9)-n或-v或--numeric-sort:显示的符号以地址排序,而不是名称排序。
例:nm -g -n libvendor_ai2_pub.a
图4-16 nm -n示例 图4-17 nm不加-n对比示例
(10)-p或--no-sort:不对显示内容进行排序。
图4-18 nm -p示例 图4-19 nm不加-p示例
(11)-P或--portability:按照POSIX2.0标准格式输出,等同于使用 -f posix。
图4-20 nm -P示例
(12)-V或--version:国际管理,查看nm的版本。
图4-21 nm -V示例
(13)-s:当列出库中成员的符号时,包含索引。索引的内容包含:哪些模块包含哪些名字的映射。
(14)-u: 只显示未定义的符号。
图4-22 nm - u示例
在执行nm指令之后,显示的符号代表如下:
表4-1 nm命令显示符号相关说明
符号 | 描述 |
A | 符号的值是绝对值,不会通过进一步的链接而改变。 |
B/b | 符号在 BSS 数据段中。通常包含零初始化或未初始化的数据。 |
C | 未初始化的数据。如果符号在任何地方定义,则被视为未定义的引用。 |
D/d | 符号在初始化数据段中。 |
G/g | 符号在小对象的初始化数据段中。一些目标文件格式允许更有效地访问小型数据对象,例如全局int变量,而不是大型全局数组。 |
i | 对于PE格式文件,这表示符号位于特定于实现的部分中 DLL。对于ELF格式文件,这表明该符号是一个间接函数。这是一个GNU对标准ELF 符号类型集的扩展。它表示一个符号,如果被一个重定位不计算其地址,而是必须在运行时调用。运行时然后执行将返回要在重定位中使用的值。 |
I | 该符号是对另一个符号的间接引用。 |
N | 该符号是调试符号。 |
n | 符号在只读数据段中。 |
p | 符号在堆栈展开部分中。 |
R/r | 该符号位于只读数据段中。 |
S/s | 该符号在小对象的未初始化或零初始化数据段中。 |
T/t | 符号在文本(代码)部分。 |
U | 符号未定义。 |
a | 本地不可变符号,通常为文件名 |
- 总结
(1)在代码编译阶段,遇到缺少相关的函数定义时,可以从函数是否未声明、定义函数的代码文件、相关库函数的添加方面着手,一一排查。
(2)grep的常用命令
表5-1 grep常用命令
命令 | 描述 |
grep -n | 显示行号 |
grep -l | 只显示文件名 |
grep -E “条件a | 条件b | …” | 多条件的搜索(可采用“条件a|条件b“”) |
grep -x | 按行进行匹配 |
grep -r | 递归的查找目录 |
(3)nm的常用命令
表5-2 nm常用命令
命令 | 描述 |
nm -g | 静态库、可执行文件、中间文件相关函数查询 |
nm -f sysv | 输出变量所在的区 |
nm -D | 动态库中的函数查询 |
nm -A | 输出时加上文件名 |
nm -a | 输出所有符号,包含debug符号 |
相关文章:
grep与nm命令的应用
相关知识拓展 Linux中grep的命令使用 在Linux中,grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在&…...
【linux】软硬链接
在linux中在磁盘中定位文件并不是根据文件名而是根据文件的inode,一个文件对应一个inode但是一个inode可以对应多个文件。硬链接硬链接是通过索引节点进行的链接。在Linux中,多个文件指向同一个索引节点是允许的,像这样的链接就是硬链接。硬链…...
骨传导蓝牙耳机排行,盘点几款性能不错的骨传导耳机
随着蓝牙耳机的普及,骨传导耳机也越来越受到欢迎,很多人也都开始在了解并尝试骨传导耳机。相比于其他类型耳机,在舒适度、安全方面有一定优势。尤其是在户外运动时,或者长时间佩戴运动时,使用骨传导耳机可以避免耳朵因…...
ARM中的寄存器
ARM工作模式 ARM有8个基本的工作模式 User 非特权模式,一般在执行上层的应用程序时ARM处于该模式FIQ 当一个高优先级中断产生后ARM将进入这种模式IRQ 当一个低优先级中断产生后ARM将进入这种模式SVC 当复位或执行软中断指令后ARM将进入这种模式Abort 当产生存取异常…...
git操作修改历史版本指定tag标签的代码,并发布新标签
场景: 当项目已经迭代多个版本之后,突然发现旧版本0.0.1出现了紧急bug,需要及时处理; 如果直接用新版本替换上去是存在极大隐患的,且时间来不及; 所以需要直接在0.0.1版本的基础上去修复bug,然…...
SpringMVC——响应处理(1)【包含源码分析】
Controller public class JsonReturnController {ResponseBodyGetMapping("/getPet")public Pet getPet(){Pet petnew Pet();pet.setAge(5);pet.setName("lily");return pet;} }项目启动后 浏览器输入 http://localhost:8080/getPet 。 debug DispatcherS…...
Normalization
1、BN(Batch Normalization) 深度网络参数训练时内部存在协方差偏移(Internal Covariate Shift)现 象:深度网络内部数据分布在训练过程中发生变化的现象。训练深度网络时,神经网络隐层参数更新会导致网络输…...
27K测试老鸟分享自己6年面试心得,四种公司、四种问题…
这里总结了下自己今年的面试情况 先说一下自己的个人情况,普通二本计算机专业毕业,懂python,会写脚本,会selenium,会性能。趁着金三银四跳槽季,面试字节跳动测试岗技术面都已经过了,本来以为是…...
中小企业数字化自动化转型的方法
自动化是我们国内未来的趋势。智能制造的实现主要依托两个基础能力,一个是工业制造技术,另一个就是工业互联网。而自动化是工业制造技术的重要组成部分,是高度智能制造装备的核心部分,与承接着制造单元与工业互联网这两大核心。懂…...
利用GPT-3 Fine-tunes训练专属语言模型
利用GPT-3 Fine-tunes训练专属语言模型 文章目录什么是模型微调(fine-tuning)?为什么需要模型微调?微调 vs 重新训练微调 vs 提示设计训练专属模型数据准备清洗数据构建模型微调模型评估模型部署模型总结什么是模型微调࿰…...
kubeadm方式安装k8s高可用集群(版本1.26x)
K8S官网:https://kubernetes.io/docs/setup/ 高可用Kubernetes集群规划 配置备注系统版本CentOS 7.9Docker版本20.10.xPod网段172.16.0.0/12Service网段10.103.10.0/16 主机IP说明k8s-master01 ~ 03192.168.77.101 ~ 103master节点 * 3k8s-master-lb192.168.77.2…...
分享5款堪称神器的免费软件,建议先收藏再下载
转眼间新年已经过去一个月了,最近陆陆续续收到好多小伙伴的咨询,这边也是抓紧整理出几个好用的软件,希望可以帮到大家。 1.电脑安全管家——火绒 火绒是一款电脑安全软件,病毒库更新及时,界面清晰干净,没…...
【项目实战】从0开始入门JDK源码 - LinkedList源码
一、源码位置 一般来说IDEA配置好JDK以后 ,JDK的源码其实也配置好了,本文是基于JDK1.8的源码说明 rt - java - util - LinkedList 二、 继承关系图 LinkedList public class LinkedList<E>extends AbstractSequentialList<E>implements...
Polygon zkEVM的gas定价
1. 引言 所有的zkEVM都存在一个有趣的问题: 如何给gas定价? 在Ethereum Virtual Machine (EVM)中,gas通过为每个计算设置economic fee,来保持网络安全。恶意行为,如拒绝服务(DoS)攻击&#x…...
stl中的智能指针类详解
C98/03的尝试——std::auto_ptr C11标准废弃了std::auto_ptr(在C17标准中被移除),取而代之的是std::unique_ptr, std::auto_ptr容易让人误用的地…...
Linux 阻塞和非阻塞 IO 实验
目录 一、阻塞和非阻塞简介 1、IO 概念 2、阻塞与非阻塞 二、等待队列 1、等待队列头 2、等待队列项 3、将队列项添加/移除等待队列头 4、等待唤醒 5、等待事件 三、轮询 1、应用程序的非阻塞函数 2、Linux 驱动下的 poll 操作函数 四、阻塞IO之等待事件唤醒 添加…...
你要的react+ts最佳实践指南
本文根据日常开发实践,参考优秀文章、文档,来说说 TypeScript 是如何较优雅的融入 React 项目的。 温馨提示:日常开发中已全面拥抱函数式组件和 React Hooks,class 类组件的写法这里不提及。 前沿 以前有 JSX 语法,…...
软件测试人员会被替代吗?IT行业哪个方向的前景最好?字节12年测开是这样说的
互联网测试从业12年,前来作答。 逻辑上来说,软件工程最初始只需要两个岗位,一个是产品经理。,一个是研发(开发),剩余的 所有岗位都是由他们衍生而来的。 第三个岗位大概率就是测试,…...
十六、vue3.0之富文本编辑器的选择
在工作过程中我们会遇到很多的时候会使用到富文本编辑器,市场上流行的也是各种各样的,那么究竟如何选择呢,今天就给大家讲讲有哪一些,方便大家的选择。 一、TinyMCE TinyMCE 是富文本编辑器领域的头部玩家之一,主流富文本编辑器,功能非常全,你需要的大多数功能它都支持…...
kafka(一) 的架构,各概念
Kafka架构 Kafak 总体架构图中包含多个概念: (1)ZooKeeper:Zookeeper负责保存broker集群元数据,并对控制器进行选举等操作。 (2)Producer: 生产者负责创建消息,将消息发…...
【ts的常用类型】
ts的常用类型前言安装ts常见类型原始类型 、数组、 any变量上的类型注解函数对象类型联合类型类型别名接口接口和类型别名的对比前言 typescript中为了使编写的代码更规范,更有利于维护,增加了类型校验,安装 安装 typescript npm i typescr…...
Hyper-V与安卓模拟器不共存
一是某些新的模拟器已经开始使用新接口开发,支持了共存,安装这种新的安卓模拟器即可。 对于不支持共存的模拟器,只得增加一个windows开机后的系统选项,如果需要切换这两种不同选项使用系统,每次切换都需要重启windows系…...
【图像分类】卷积神经网络之ZFNet网络模型结构详解
写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 1. 前言 由于AlexNet的提出,大型卷积网络开始变得流行起来,但是人们对于网络究竟为什么能表现的这么好,以及怎…...
亿级高并发电商项目-- 实战篇 --万达商城项目 十三(编写购物车、优化修改商品、下架商品方法、购物车模块监听修改商品、删除商品消息)
👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 Ǵ…...
springboot 虚拟线程demo
jd19支持虚拟线程,虚拟线程是轻量级的线程,它们不与操作系统线程绑定,而是由 JVM 来管理。它们适用于“每个请求一个线程”的编程风格,同时没有操作系统线程的限制。我们能够创建数以百万计的虚拟线程而不会影响吞吐。 做个 spri…...
CTFer成长之路之逻辑漏洞
逻辑漏洞CTF 访问url: http://1b43ac78-61f7-4b3c-9ab7-d7e131e7da80.node3.buuoj.cn/ 登录页面用随意用户名密码登录 访问url: http://1b43ac78-61f7-4b3c-9ab7-d7e131e7da80.node3.buuoj.cn/user.php 登陆后有商品列表,共三个商品,点击购买flag 钱…...
入门力扣自学笔记238 C++ (题目编号:1144)
1144. 递减元素使数组呈锯齿状 题目: 给你一个整数数组 nums,每次 操作 会从中选择一个元素并 将该元素的值减少 1。 如果符合下列情况之一,则数组 A 就是 锯齿数组: 每个偶数索引对应的元素都大于相邻的元素,即 A…...
蓝桥杯-寒假作业
没有白走的路,每一步都算数🎈🎈🎈 题目描述: 有四个等式,每个等式的运算规则已经定好了,也就是我们常见的小学的四则运算,但是能够用来四则运算的数字非常有限,包括1~13…...
测试用例篇
1.测试用例的意义 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。 测试用例的意义是为了帮助测试人员了解测什么,怎么测 eg&#x…...
自动驾驶自主避障概况
文章目录前言1. 自主避障在自动驾驶系统架构中的位置2. 自主避障算法分类2.1 人工势场法(APF)2.1.1引力势场的构建2.1.2斥力势场的构建2.1.3人工势场法的改进2.2 TEB(Timed-Eastic-Band, 定时弹性带)2.3 栅格法2.4 向量场直方图(V…...
潍坊做网站价格/设计一个公司网站多少钱
Linux 下的硬盘读写速度测试工具执行一下以下命令看看你服务器的磁盘性能如何。hdparm -Tt /dev/sda以下是 2块 希捷 ES2 SATA 500G 做 Raid0 的速度[rootadmin ~]# hdparm -Tt /dev/sda/dev/sda:Timing cached reads: 18916 MB in 1.99 seconds 9484.20 MB/secTiming buffere…...
中文wordpress模版/网络营销战略的内容
审计机制是DM数据库管理系统安全管理的重要组成部分之一。DM具有一个灵活的审计子系统,可以通过它来记录系统级事件、个别用户的行为以及对数据库对象的访问。 审计开关 ENABLE_AUDIT参数为达梦数据库审计开关,DM8该参数为READ ONLY只读类型࿰…...
wordpress新手基础入门视频教程/线上营销推广方式
直角坐标是常用的坐标法,但是对于一些特别的问题,在直角坐标系下处理就显得有点笨拙了。这个时候,不妨试试极坐标。它可以使得问题变得出乎意料的简洁,也能让问题直观和清晰起来。 极坐标 什么是极坐标 概念来自百度百科ÿ…...
合肥网站制作公司排名/可以放友情链接的网站
今天比较闲,公司没任务,就来写文章,这篇文章就是纯记录异常了,写的比较少,大家如果学习python,关注我,我们一起努力,一起成长 从入门开始,python学习(五&…...
家乡特产网络营销方案/天津关键词优化专家
1.在下列的 HTML 中,哪个可以添加背景颜色?()A.<body color"yellow">B.<background>yellow</background>C.<body bgcolor"yellow"> 2.在下列的 HTML 中,哪个可以插入背景…...
wordpress mobile 主题/苏州关键词优化软件
(1) 进入目录手动删除 configure作用:是源码安装软件时配置环境用的 他根据你的配置选项和你的系统情况生成makefile文件 为make 做准备 最常用的参数: ./configure --prefix 作用:不指定prefix,则可执行文件默认放在/usr/local/bin,库文件默认放在/usr/…...