linux 快速查找c函数,Linux下利用grep命令快速查找并定位C语言函数声明所在的头文件及其行数...

查找first.c和second.c两个文件中含有void的行:grep void first.c second.c

查找当前目录下所有c文件中含有void的行:grep void *.c

查找当前目录下所有文件(不含子文件夹)中含有void的行:grep void * (遇到文件夹会产生警告信息)

查找当前目录下所有文件(不含子文件夹)中含有void的行,忽略子文件夹产生的警告信息:grep void * -d skip

查找当前目录下所有文件及其子文件夹中含有void的行,并显示行号:grep void -nr(-n是指显示行号,-r是指递归遍历文件夹)

查找指定文件夹Documents/codes/C下的所有文件及子文件夹含有void的行,并显示行号:grep void -nr Documents/codes/C

查找指定文件夹Documents/codes/C下的所有文件及子文件夹含有单词void的行,并显示行号:grep void -nrw Documents/codes/C (-w是指匹配整个单词)

正则表达式匹配:grep "[a-z]\{2\}" -nrw (查找含有两个字母的单词所在行和行号,{2}表示匹配两次,{}必须要转义)

忽略二进制文件的匹配结果,只显示文本文件(-I,大写的i):grep "s\{2\}" -Inrw(查找ss)

查找当前文件夹及子文件夹下文件名为shm*.c中以shm开头的单词的行及其行号:grep "shm\w*" -Inrw --include=shm*.c

查找系统头文件库中指定函数名的函数声明所在的头文件和行数:

grep gtk_application_window_new -Inrw /usr/include/gtk-3.0/gtk(查找gtk_application_window_new函数的声明)

grep g_signal_connect -Inrw /usr/include/glib-2.0/ --include=*.h (查找g_signal_connect的声明,只查找*.h头文件)

grep g_application_run -Inrw /usr/include/glib-2.0/ --include=*.h(查找g_application_run的声明)

grep g_signal_ -Inr /usr/include/glib-2.0/ --include=*.h(查找所有含有g_signal_的函数的声明,注意没有-w选项)

查找当前文件夹及子文件夹下的文件中调用了指定函数名函数的c文件和行数:

grep g_signal_ -Inr --include=*.c(函数名部分匹配,只查找c文件)

grep g_signal_connect -Inrw(函数名完全匹配)

查看当前目录及子目录下的所有文件:find

查找当前目录及子目录下所有的c文件的文件名:find -name "*.c"(文件名必须要加引号)

查看/usr/include/gtk-3.0/gtk目录及子目录下的所有文件:find /usr/include/gtk-3.0/gtk

查找/etc目录及子目录下所有的conf文件的文件名:find /etc -name "*.conf"

不仅显示匹配行,还要显示后两行(After):grep void -Inrw -A 2

不仅显示匹配行,还要显示前两行(Before):grep void -Inrw -B 2

不仅显示匹配行,还要显示前后两行(before and after):grep void -Inrw -C 2

大小写不敏感:grep VOID * -i

奇淫技巧:当然这是我没有使用任何编辑器,同时也没有安装任何VIM插件的查找方式(本人习惯使用atom remoteftp 插件去处理)

磨刀不误砍柴工,建议先看看Documentation/CodingStyle,这类问题可以用

grep -lr "struct task_struct {" [KERN_SRC_PATH]/*

来找答案,一般只要扫include 和arch/[ARCH]就可以了。

例如要查找:内核中进程对应的结构体task_struct的定义处,如下图所示:

dd3d4b52d97f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

查找的命令

dd3d4b52d97f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值