再次唠叨linux中的strings命令
2015-11-28 09:08
453 查看
以前我用strings命令的频率不高, 现在越用越顺手, 而且已经是离不开strings命令了。虽然以前说过strings命令, 但今天还是要说。 主要是两大用途, 下面来说明一下:
一. 确认代码编是否译到库中去了?
在大型的开发中, 我们经常修改一两行代码, 有时候自己修改的代码并没有编到库中去(有可能是代码没有同步到linux上编译, 也有可能是有编译错误导致生成库失败, 也有肯能是该make clean的地方没有make clean或rm库, 还有可能是其他杂七杂八的原因), 这样会经常误导自己的判断, 折腾大半天。
还有, 比如你代码提交了, 结果你的同事更新(svn up)了代码(也就是获取了你的代码), 但编译的时候由于各种原因没有把你的代码编译进去, 然后他提交了这个库, 然后呢, 自然就出了问题, 老板找到你的头上。 此时, 可以用strings命令快速判断提交的库中是否包含你自己的代码。 我用过无数次, 屡试不爽。 说了这么多, 下面来实战一下:
二. 对于新手来说, 需要知道新生成的代码进入了哪个库, 然后才好找库啊!
这个需求也很合理, 不能说代码编译到哪个库中去了, 你还不知道。 用strings命令吧, 如下:
OK, 天天用的东西, 多说一次也无妨。
一. 确认代码编是否译到库中去了?
在大型的开发中, 我们经常修改一两行代码, 有时候自己修改的代码并没有编到库中去(有可能是代码没有同步到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]$
OK, 天天用的东西, 多说一次也无妨。
相关文章推荐
- Linux运维 第五阶段(二)heartbeat V2(HA)
- Centos非管理员安装Python和pip
- linux 中 ll 命令如何让查询结果按时间升序或降序排序?
- CentOS 6.7局域网内搭建NTP服务器
- linux日常管理-系统服务
- Win7下安装OK6410的USB驱动以及Linux下源码安装dnw
- linux之cut用法
- linux命令-任务计划-cron
- Linux之win764位下基于EasyBCD的硬盘安装ubuntu32位双系统一些错误总结
- 压力测试工具ab 及 centos下单独安装方法
- Linux驱动开发 -- 打开dev_dbg()
- linux 安装wordpress 无故往外发送大量垃圾邮件
- Linux常用命令记录
- linux日常管理-防火墙netfilter工具-iptables-3
- Linux Cache Memory
- linux性能分析 sar 命令详解
- 局域网下 VMware虚拟机中linux(centos)桥接上网
- Linux系统内核制作和内核模块的基础
- Linux中的正则表达式基本用法
- Linux下安装qtcreator部分问题解决