Linux下完美使用find+grep实现全局代码搜索
作者:zhanhailiang 日期:2014-10-11
背景
在Window下有大量方便的图形化工具能够实现全局搜索,可是Linuxserver中因为使用命令行操作导致全局搜索是一个比較高的门槛。
第一种方法
首先,举个最简单的样例,在阅读代码过程中我们常常须要查看某个函数的定义,可是一般开源项目代码规模都相当庞大,此时你就能够例如以下使用find+grep轻松查找到该函数的定义,譬如。我想在php源代码中搜索is_array方法的定义。例如以下:
[root@AY140321223706700af3Z standard]# find . -name '*.c' -exec grep -Hna 'is_array' {} \;
./basic_functions.c:2540:ZEND_BEGIN_ARG_INFO(arginfo_is_array, 0)
./basic_functions.c:3049: PHP_FE(is_array, arginfo_is_array)
./type.c:283:/* {{{ proto bool is_array(mixed var)
./type.c:285:PHP_FUNCTION(is_array)
这里须要注意两点: 1. find使用-exec时“;”是必备參数,例如以下两种方法都会导致“find: missing argument to `-exec'”,当中第一个命令报错是由于确实缺少“;”,而第二个命令报错是由于在shell中运行语句时“;”被觉得是结束符,而不是-exec的參数,故使用时必须对其进行转义。
[root@AY140321223706700af3Z standard]# find . -name '*.c' -exec grep -Hna 'is_array' {}
find: missing argument to `-exec'
[root@AY140321223706700af3Z standard]# find . -name '*.c' -exec grep -Hna 'is_array' {} ;
find: missing argument to `-exec'
[root@AY140321223706700af3Z standard]# find --help
actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print
-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
-exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
-execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;
2. 如上例,笔者在使用grep时加入了-Hna,其分别输出文件路径,行号,及对应的文本内容:
[root@AY140321223706700af3Z standard]# grep --help
-n, --line-number print line number with output lines
--line-buffered flush output on every line
-H, --with-filename print the filename for each match
-a, --text equivalent to --binary-files=text
另外一种方法
假设针对查看项目查看源代码的需求,那么在server上安装配置好ctags工具来配合vim,将是完美方案,请參考《Sublime
Text 2安装Ctags插件》相似原理在Linux上安装配置就可以,强烈技术流的同学使用该方法。
Linux下完美使用find+grep实现全局代码搜索的更多相关文章
- Arch Linux下Visual Stdio Code在格式化C代码时报错
libtinfo.so.5: cannot open shared object file: No such file or directory Arch Linux下Visual Stdio Cod ...
- Linux下获取本机IP地址的代码
Linux下获取本机IP地址的代码,返回值即为互联网标准点分格式的字符串. #define ETH_NAME "eth0" //获得本机IP地址 char* GetLocalAdd ...
- Python基础-面向过程编程实现Linux下cat -rl ‘dir’ |grep ‘keywords’ 功能
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- Guake Terminal ── linux下完美帅气的终端
虽说如今非常多Linux发行版.比方Ubuntu,已经基本上能够採用GUI来完毕绝大部分一般性的任务. 可是,终端程序对于linux用户来说仍是不可缺少的. Gnome自带的gnome-termina ...
- linux下C语言编程,include的默认搜索路径
C语言编程时,发现细节的魅力很大.较为详细了看了一下关于include的知识,发现了几点新知: 1.include<头文件名>和include"头文件名" 如:incl ...
- Linux下高效实用的grep命令
Linux系统中的grep命令是一种功能强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则 ...
- linux下使用find xargs grep查找文件及文件内容
1,在某个路径下查文件. 在/etc下查找“*.log”的文件 find /etc -name “*.log” 2,扩展,列出某个路径下所有文件,包括子目录. find /etc -name “*” ...
- 【转载】Linux下动态共享库加载时的搜索路径详解
转载自:http://www.eefocus.com/article/09-04/71617s.html 对动态库的实际应用还不太熟悉的读者可能曾经遇到过类似“error while loading ...
- Linux下动态共享库加载时的搜索路径详解
对动态库的实际应用还不太熟悉的读者可能曾经遇到过类似“error while loading shared libraries”这样的错误,这是典型的因为需要的动态库不在动态链接器ld.so的搜索路径 ...
随机推荐
- python strip() 函数探究
strip()方法语法:str.strip([chars]); 声明:str为字符串,rm为要删除的字符序列 str.strip(rm) 删除字符串中开头.结尾处,位于rm删除序列的字符 eg1: # ...
- 在PetaPoco中使用Where in
之前一直没在意,今天查了很多资料,才知道在petapoco中使用in关键字需要使用命名参数,否则是无效的(或者只查出第一个条件的记录),示例如下: var tags= new string[]{“c1 ...
- 对称加密DES加密
DES加密: des是对称加密,加密和解密需要相同的秘钥,它的密码最长56位,必须是8的倍数,秘钥越长,越安全. package com.trm.util.encrypt; import java.s ...
- 查看DNS、IP、Mac等
A.Win98:winipcfg B.Win2000以上:Ipconfig/all C.NSLOOKUP:如查看河北的DNS C:\\>nslookup Default Server: ...
- linux 后台进程
1.进程放入后台 ctrl+z 进程放入后台 暂停执行 2.进程放入后台执行 bg % n 或者 bg n 进程放入后台执行 3.进程取出前台执行 fg % n 或者 fg n 进程取出前台执行 4. ...
- 20181019 记录 window.setTimeout('dofunction()',2000); - layui form 表单提交 事件 - F11全屏 事件 window.onresize
1 延时事件 window.setTimeout('dofunction()',2000); 函数外面要有引号 如果没有引号 就不能延时执行 应该是内容进行eval,所以外层不是传递字符串的话,外层函 ...
- JSP的九大对象和四大作用域
1.JSP中九大内置对象为: request 请求对象 类型 javax.servlet.ServletRequest 作用域 Request ...
- run loop
Objective-C之run loop详解 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/9237973 转载请注明出 ...
- nginx搭建静态资源服务器
nginx配置访问前端工程 1.前端工程目录 crm-view |-- view |-- user.html 2.工程位置 C:\Users\Administrator\Desktop\CRM系统\c ...
- PHP:POST OR GET 请求
文章来源:http://www.cnblogs.com/hello-tl/p/7685216.html /** * 模拟提交参数,支持https提交 可用于各类api请求 * @param strin ...