博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

CalmArrow

【打好基础】全力以赴,顺其自然【每天进步一点点】
  piaoxiang.cublog.cn

关于作者
姓名:CalmArrow(lqm)
职业:硕士在读
位置:山东济南
研究:嵌入式系统设计
联系:calmarrow@gmail.com

信仰:
    1、永远保持积极向上(积极的心态,积极的思考,积极的行动),享受生活给予的一切!
    2、做正确的事,正确的做事;用心去做,做到最好!
    3、如果你觉得不幸福,那么请你把幸福的门槛降低一些,不要把幸福拒之门外。。。

目标:
    软硬结合,打好基础,提高学习能力,完善知识体系,建立核心优势。

方法:
    理论与实践相结合
    深度与广度相结合
    理解与记忆相结合

说明:
    本Blog仅供学习之用,转载文章如涉及版权,请通知。原创作品如转载,请注明出处。
|| << >> ||
我的分类


利用shell来提高工作效率
2007-10-30
 
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 "\<ARRAY_SIZE"
/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选项,实现了对匹配行的准确定位。以后在查找中就方便多了。

发表于: 2007-10-30,修改于: 2007-11-19 17:01,已浏览782次,有评论1条 推荐 投诉


网友评论
网友: Sunny 时间:2007-11-04 20:41:01 IP地址:58.68.132.★
同意,我搜文件时就是直接用grep的,搜文件用find。

 发表评论