博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下完美使用find+grep实现全局代码搜索
阅读量:5924 次
发布时间:2019-06-19

本文共 1694 字,大约阅读时间需要 5 分钟。

作者: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,将是完美方案,请參考《》相似原理在Linux上安装配置就可以,强烈技术流的同学使用该方法。

转载地址:http://ctavx.baihongyu.com/

你可能感兴趣的文章
python使用Cookie模拟登录
查看>>
JAVA实现AES加密
查看>>
MFC中的位图操作
查看>>
vim的使用方法
查看>>
使用snmpwalk采集设备的OID信息
查看>>
创业故事和创业思路文档汇总
查看>>
解决centos7 yum安装MySQL rpm包出现conflict problem
查看>>
Python-字典
查看>>
PL/SQL Virtual Machine Memory Usage
查看>>
The certificate used to sign "" has either expired or has been revoked.
查看>>
Linux目录结构
查看>>
CSS浮动
查看>>
Script:Logfile Switch Frequency Map
查看>>
linux系统学习第四天
查看>>
Lnmp+Wordpress出现控制台页面No Input File Specified
查看>>
mongoDB数据库安装与配置
查看>>
system()命令注入
查看>>
Linux上文件的特殊权限SUID,SGID,SBIT详解
查看>>
Linux用户和组的命令之groupdel
查看>>
Facebook的AR战略背后,有哪些人工智能技术加持?
查看>>