Chinaunix首页 | 论坛 | 博客
  • 博客访问: 83963
  • 博文数量: 26
  • 博客积分: 2055
  • 博客等级: 大尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-19 14:52
文章分类

全部博文(26)

文章存档

2013年(2)

2011年(1)

2009年(2)

2008年(21)

我的朋友

分类: LINUX

2008-03-19 16:45:09

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) |
给主人留下些什么吧!~~