您的位置:首页 > 运维架构 > Linux

Linux下的代码阅读和查找工具

2013-08-04 22:19 363 查看
1.ctags

ctags命令配合vim编辑器可以帮助程序员很方便地查看源代码,使用方法:

(1)在源代码顶层目录下执行ctags -R * 递归建立源代码信息库;

(2)vim -t tagname 打开含有tagname的文件;

vim编辑器中

(3):tag tagname:跳到含有tagname的文件中;

(4):tn :下一个tagname;

(5):tp :前一个tagname;

(6):cstag tagname:列出所有tagname所在位置;

vim编辑器中,光标移动到某变量上

(7)ctrl+ ]:跳到该变量的定义上;

(8)ctrl+ T:跳回原位置

2.cscope

cscope是另一个好用的源代码查看工具,一般说来,都是vim+ctags+cscope的组合工具,因此,下面来看看cscope的使用。

(1)源代码顶层目录下执行cscope -Rbkq

-R:递归建立信息库;

-b:只建立交叉引用链接;

-k:内核模式(只在浏览内核源代码时使用);

-q:开启加速功能;

命令行下可以使用“cscope -d”命令单独使用cscope查看源代码;也可以在vim编辑器中“: cscope add cscope.out”将信息导入vim中,然后可以使用“:cscope help”命令查看可用功能了。

3.find

在指定路径中递归搜索文件,支持各种条件搜索,并可以对搜索到的文件执行特定操作。

基本格式:find [路径] [参数] [表达式]

常用参数:

-user:根据文件拥有者查找文件;
-group:根据文件所属组查找文件;
-name:根据文件名查找文件;
-perm:根据文件权限查找文件;
-size:根据文件大小查找文件;
-atime n:将n*24小时内被访问过的文件列出来;
-ctime n:将n*24小时内被改变、新增过的文件列举出来;
-mtime n:将n*24小时内被修改过的文件列举出来;
-newer file:将比file还要新的文件列举出来;
-gid n:寻找组ID为n的文件;
-group name:寻找群组名称为name的文件;
-uid n:寻找拥有者ID为n的文件;
-name file:寻找文件名为file的文件
-type [bcdpls]:寻找特定类型的文件(块设备,字符设备,目录,管道、链接和套接字)
此外find还支持高级应用,比如,可以使用逻辑运算符来编写复杂条件,“-o”表示或运算,“-not”表示非运算,可以对找到的文件进行操作,格式如下:

find [路径] [参数] [表达式] -exec 指令 {} \;

l {}代表find找到的文件

l \ 禁止转意

l ;表示本行指令结束

4.grep

使用grep命令:

grep -rni --include ‘*.[c|h]’ ‘regex’ ./

即在当前目录下所有的.c和.h文件中查找与regex匹配的项,其中:

-r:表示递归地查找当前目录及其子目录;

-n:显示行号;

-i:忽略大小写;

可以根据情况进行灵活调整和组合。

5.正则表达式

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是描述这些规则的工具。

参考:

(1)\b:匹配单词的开头或结尾,如“\bhi\b”匹配单词“hi”;
(2).:匹配除换行符外的任意字符;
(3)*:该符号前面的字符可以重复若干次,如“.*”代表任意数量的不含换行符的字符;
(4)\d:匹配一个数字,\d{num}匹配num次数字;
(5)\s:匹配任意空白符,包括空格,制表符(Tab)和换行符等;
(6)\w:匹配字母或数字或下划线或汉字等;
(7)+:该符号前面的字符匹配一次或若干次;
(8)^:匹配字符串的开始;
(9)$:匹配字符串的结束;
(10)?:该符号前面的字符匹配零次或一次;
(11){n}:重复n次;
(12){n,}:重复n次或更多次;
(13){n,m}:重复n到m次;
(14)[]:匹配其中任意一个字符,如[aeiou]匹配元音字母中任意一个;[2-5]匹配2到5任意数字;
(15)|:表示分支条件,相当于“或”
(16)\W:匹配任意不是字母,数字,下划线和汉字的字符;
(17)\S:匹配任意不是空白符的字符;
(18)\D:匹配任意不是数字的字符;
(19)\B:匹配不是单词开头或结束的位置;
(20)[^x]:匹配除了x以外的任意字符,如[^aeiou]匹配除了aeiou这几个字母以外的任意字符;
举例:

\ba\w*\b:匹配以a开头的单词;

\d+:匹配1个或更多连续数字;

\b\w{6}\b:匹配刚好六个字母的单词;

^\d{5,12}$:匹配5到12位的数字;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: