我们知道,在 Windows 下,有一款非常实用的神器,叫作Everything,它可以在极短的时间里,搜索出来你所想要的文件/目录,如下图示:
Linux 下也有一些类似于 everything 的神器,比如:locate,Catfish,Tracker,等等。这些工具也十分强大,在此就不一一演示了,有兴趣的小伙伴可以自行去体验一下。
但是,其实我们自己也可以动手实现一个轻巧的 everything ,既可以满足自己的需求,也可以提高自己的技术,还能在程序媛面前秀一把~
废话不多说,我们直接上脚本:
#!/bin/sh #lazyfind #GNUAll-PermissiveLicense #Copyinganddistributionofthisfile,withorwithoutmodification, #arepermittedinanymediumwithoutroyaltyprovidedthecopyright #noticeandthisnoticearepreserved.Thisfileisofferedas-is, #withoutanywarranty. ##helpfunction functionhelpu{ echo"" echo"Fuzzysearchforfilename." echo"$0[--match-case|--path]filename" echo"" exit } ##setvariables MATCH="-iname" SEARCH="." ##parseoptions while[True];do if["$1"="--help"-o"$1"="-h"];then helpu elif["$1"="--match-case"-o"$1"="-m"];then MATCH="-name" shift1 elif["$1"="--path"-o"$1"="-p"];then SEARCH="${2}" shift2 else break fi done ##sanitizeinputfilenames ##createarray,retainspaces ARG=("${@}") set-e ##catchobviousinputerror if["X$ARG"="X"];then helpu fi ##performsearch forqueryin${ARG[*]};do /usr/bin/find"${SEARCH}""${MATCH}""*${ARG}*" done
这段脚本不是良许的原创,而是国外一个小哥的作品。这个脚本写得还是非常简洁,并且使用了一些常用的 Shell 编程技术,好好去研究它也会提高自己的 Shell 编程水平。
那么这个脚本怎么用?
第一步,创建一个脚本文件。
比如创建的脚本文件是lazy_find.sh。
$vimlazy_find.sh
然后,我们再把上面的脚本内容复制进去,再按:wq保存并退出。
接着,我们再用chmod命令赋予这个脚本可执行权限:
$chmod+xlazy_find.sh
第二步,使用脚本搜索文件。
最基本的用法,就是在脚本名称后面直接跟上要搜索的文件名称。不需要跟上完整的名称,只需要其中一部分就好,比如:
$./lazy_find.shscr
运行结果如下:
可以看到,这个脚本不仅可以搜索当前路径下的文件,还可以搜索当前目录下的子目录及孙目录,也就是具有递归搜索的功能。
上面这种用法是不匹配大小写的效果,也就是说,既可以匹配到scr,也可以匹配到Scr。那么,如果想要区分大小写,需要怎么做?
只需加上-m选项即可。
$./lazy_find.sh-mscr
运行结果如下:
可以看到,Scr已经没有再被匹配到了。
如果我们不想搜索当前目录,而是想要搜索指定目录,则只需加上--path,并指定想要搜索的路径即可。
比如,我们想在家目录下搜索包含有hello关键字的文件/目录,可以这么运行命令:
$./lazy_find.sh--path~hello
运行结果如下:
第三步,自定义命令调用脚本
在上面的使用方法中,我们需要自己手动去运行那个脚本文件,这样肯定是非常不方便的。我们可以自定义一个命令,比如lf,当运行这个命令时,就自动调用这个脚本,从而大大提高效率。
有 Linux 基础的小伙伴应该想到了,我们可以使用alias命令来实现这个效果。为了能够在系统重启之后lf命令依然能使用,我们直接在.bashrc里进行修改。
$vim~/.bashrc
在.bashrc文件的末尾增加这么一行语句即可:
aliaslf=~/bin/lazy_find.sh#路径别照抄,写你自己的脚本路径!!
增加完语句之后,按:wq保存并退出。然后,再使能我们的修改:
$.~/.bashrc
OK,大功告成了,我们在任意地方都可以使用这个命令了。
小结
本文我们通过一段脚本来实现 everything 的一些基本功能,通过学习这个脚本,我们可以提高自己的 Shell 编程能力,同时也可以学会如何自定义命令来调用自己写的脚本。
本文比较基础,适合小白入门。
-
Linux
+关注
关注
87文章
11290浏览量
209290 -
WINDOWS
+关注
关注
3文章
3541浏览量
88609 -
程序
+关注
关注
117文章
3785浏览量
80991 -
脚本
+关注
关注
1文章
389浏览量
14858
原文标题:自己动手在 Linux 系统实现一个 everything 程序
文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论