美文网首页
Linux下利用grep命令快速查找并定位C语言函数声明所在的头

Linux下利用grep命令快速查找并定位C语言函数声明所在的头

作者: 人生背包客 | 来源:发表于2018-04-01 01:07 被阅读330次

    转载出处

    查找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的定义处,如下图所示:

    查找的命令

    相关文章

      网友评论

          本文标题:Linux下利用grep命令快速查找并定位C语言函数声明所在的头

          本文链接:https://www.haomeiwen.com/subject/mzxocftx.html