strings命令(转)
以前我用strings命令的频率不高, 现在越用越顺手, 而且已经是离不开strings命令了。虽然以前说过strings命令, 但今天还是要说。 主要是两大用途, 下面来说明一下:
一. 确认代码编是否译到库中去了?
在大型的开发中, 我们经常修改一两行代码, 有时候自己修改的代码并没有编到库中去(有可能是代码没有同步到linux上编译, 也有可能是有编译错误导致生成库失败, 也有肯能是该make clean的地方没有make clean或rm库, 还有可能是其他杂七杂八的原因), 这样会经常误导自己的判断, 折腾大半天。
还有, 比如你代码提交了, 结果你的同事更新(svn up)了代码(也就是获取了你的代码), 但编译的时候由于各种原因没有把你的代码编译进去, 然后他提交了这个库, 然后呢, 自然就出了问题, 老板找到你的头上。 此时, 可以用strings命令快速判断提交的库中是否包含你自己的代码。 我用过无数次, 屡试不爽。 说了这么多, 下面来实战一下:
- [taoge@localhost test]$ ls
- test.c
- [taoge@localhost test]$ cat test.c
- #include <stdio.h>
- int main()
- {
- int a = 1;
- int b = 2;
- int c = a + b;
- printf("xxx, %d, %d, %d\n", a, b, c);
- return 0;
- }
- [taoge@localhost test]$ gcc test.c
- [taoge@localhost test]$ ls
- a.out test.c
- [taoge@localhost test]$ strings a.out | grep xxx
- xxx, %d, %d, %d
- [taoge@localhost test]$
如上, 一般都是在自己写的代码中, 加点日志(字符串), 相当于打点tag, 然后用strings命令进行判断。 如果是不需要加日志, 那怎么办呢? 我经常是对文件中的之前日志中的字符串做简要修改, 比如加上xxx, 实际上也相当于打下自己的tag印记。
二. 对于新手来说, 需要知道新生成的代码进入了哪个库, 然后才好找库啊!
这个需求也很合理, 不能说代码编译到哪个库中去了, 你还不知道。 用strings命令吧, 如下:
- [taoge@localhost test]$ find -name "*" | xargs strings -f | grep xxx
- ./test.c: printf("xxx, %d, %d, %d\n", a, b, c);
- ./a.out: xxx, %d, %d, %d
- [taoge@localhost test]$
OK, 一目了然, 知道xxx编译到哪里去了。要补充一下, find命令中的双引号不能少, 否则:
- [taoge@localhost test]$ find -name *
- find: paths must precede expression: test.c
- Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
- [taoge@localhost test]$
strings命令(转)的更多相关文章
- linux中的strings命令简介2
摘自:http://blog.csdn.net/stpeace/article/details/46641069 linux中的strings命令简介 之前我们聊过linux strings的用法和用 ...
- linux中的strings命令简介
摘自:http://blog.csdn.net/stpeace/article/details/46641069 linux中的strings命令简介 在linux下搞软件开发的朋友, 几乎没有不知道 ...
- linux中的strings命令
strings - print the strings of printable characters in files. 意思是, 打印文件中可打印的字符. 我来补充一下吧 ...
- 技巧性极强的strings命令
打印文件中的可打印字符串(print the strings of printable characters in files).常用来在二进制文件中查找字符串,与grep配合使用.strings命令 ...
- 用strings命令查看kafka-log内容
kafka的log内容格式还不没怎么了解,想快速浏览消息内容的话,除了使用它自带的kafka-console-consumer.sh脚本,还可以直接去看log文件本身,不过内容里有部分二进制字符,通过 ...
- 用strings命令查看kafka-log内容 过滤二进制编码
kafka的log内容格式还不没怎么了解,想快速浏览消息内容的话,除了使用它自带的kafka-console-consumer.sh脚本,还可以直接去看log文件本身,不过内容里有部分二进制字符,通过 ...
- centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课
centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...
- strings命令的实现 2014-06-02 00:17 355人阅读 评论(0) 收藏
本程序实现从文件中提取连续4个以上的可打印字符.模仿linux中string命令 #include <stdio.h> #include<stdlib.h> #include ...
- strings和nm命令
strings和nm命令 strings 一.简介: 显示文件中的可打印字符 二.用法 strings [option(s)] [file(s)] 选项说明: -a – –all 扫描整个文件而不是只 ...
随机推荐
- Windows docker k8s asp.net core
在上一篇文章 Ubuntu 18 Kubernetes的Install and Deploy 我们在ubuntu在部署了k8s集群, 今天来看看windows下怎么搞. 主要点有: 1) window ...
- Java学习:JDBC各类详解
JDBC各个类详解 代码实现: //1.导入驱动jar包 //2.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //3.获取数据库连对象 ...
- C#程序计算N阶行列式的值及N元一次方程组
C#程序计算N阶行列式的值及N元一次方程组 用了挺长时间自行完成了C#程序计算N阶行列式的值及N元一次方程组.由于自己没有在网上查阅其他资料,所以只能硬着头皮用最朴素的思想和基础的算法进行编程.在给出 ...
- N-gram理解
如何来理解这个概率呢? p( i love you) 如果是 =p(i)p(love)p(you) 就是只考虑单词出现的概率本身. 如果是 =p(i)p(love|i)p(you|love) 就是 ...
- Java自学-数字与字符串 StringBuffer
Java StringBuffer常见方法 StringBuffer是可变长的字符串 示例 1 : 追加 删除 插入 反转 append追加 delete 删除 insert 插入 reverse 反 ...
- Java自学-接口与继承 final
Java的修饰符final final修饰类,方法,基本类型变量,引用的时候分别有不同的意思. 示例 1 : final修饰类 当Hero被修饰成final的时候,表示Hero不能够被继承 其子类会出 ...
- JS 中类型和类型转换
类型 首先明确一点,Js中的类型是针对值来说,而不是针对变量,值就是所谓的42, 'abc', false 等能用js 操作的数据.在js 中说某某某是什么数据类型,其实是说的这些值是什么类型.值呢? ...
- SYN泛洪攻击原理及防御
拒绝服务攻击时,攻击者想非法占用被攻击者的一些资源,比如如:带宽,CPU,内存等等,使得被攻击者无法响应正常用户的请求. 讲泛洪攻击之前,我们先了解一下DoS攻击和DDoS攻击,这两个攻击大体相同,前 ...
- 转摘jemeter学习-连接数据库之jdbc请求
JMETER连接数据库 mysql下载地址:https://dev.mysql.com/downloads/connector/j/ mysql连接器根据语言选择/J,用的是Mac,选择下载.tar. ...
- H3C FAT AP