1、查找定位技巧
在C语言基础训练中,往往会借鉴Linux源代码,于是少不了查找。Windows下面有source
insight,Linux也有相应的工具。但是,如果仅仅是查找一个宏的定义方式,比如ARRAY_SIZE,则只需要一行shell命令就可以了。举
例如下:
[armlinux@lqm interview]$ find /usr/include -name "*.h" | xargs grep -n "[[:blank:]]ARRAY_SIZE" /usr/include/libiberty.h:327:#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) [armlinux@lqm interview]$
|
或者
[armlinux@lqm interview]$ find /usr/include -name "*.h" | xargs grep -n "\ /usr/include/libiberty.h:327:#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) [armlinux@lqm interview]$
|
这样的定位信息还是比较准确的,不过对于匹配模式需要精心设计。
这里有两个比较好的习惯。
(1)find和xargs组合使用。
使用xargs工具作为筛选器,可以充分利用从find命令挑选的输出。find运行通常提供与某些条件匹配的文件列表。此列表被传递到xargs上,后者然后使用该文件列表作为参数来运行其他某些有用的命令。这与不使用xargs是完全不同的。
(2)停止对cat使用管道。
grep的一个常见的基本用法错误就是通过管道将cat的输出发送到grep以搜索单个文件的内容。这绝对是不必要的,纯粹是浪费时间,因为诸如grep这样的工具接受文件名作为参数。您根本不需要在这种情况下使用cat。
这两个习惯是《Unix高手的10个习惯》中的。我以前犯过第二个错误,就是使用了cat然后grep,现在的这行shell操作则纠正了这个错误,效率上也有所提高。另外,还使用了grep的-n选项,实现了对匹配行的准确定位。以后在查找中就方便多了。
阅读(1009) | 评论(0) | 转发(0) |