0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux系统攻略 用脚本快速实现everything程序

Linux爱好者 来源:Linux爱好者 良许 作者:Linux爱好者 良许 2020-08-14 16:34 次阅读

我们知道,在 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

    文章

    10990

    浏览量

    206733
  • WINDOWS
    +关注

    关注

    3

    文章

    3440

    浏览量

    87143
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79540
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14635

原文标题:自己动手在 Linux 系统实现一个 everything 程序

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    几个经典高效的linux脚本

    今天浩道跟大家分享硬核shell干货,以下几个脚本皆为经典高效的linux脚本,拿来即用!
    发表于 10-21 09:04 1236次阅读

    Linux中执行shell脚本的两种方式

    一条的执行很是不大方便,这种太多命令的才能完成的,一般都是编写一个shell脚本来进行操作,而不用一步一步的进行。有些时候在Linux中的很多对应的应用程序目录下有很多.sh结尾的脚本
    发表于 11-18 16:49 1387次阅读
    <b class='flag-5'>Linux</b>中执行shell<b class='flag-5'>脚本</b>的两种方式

    Linux shell脚本分享

    今天浩道跟大家分享几个Linux运维中常用到的shell脚本
    发表于 07-18 09:53 457次阅读
    <b class='flag-5'>Linux</b> shell<b class='flag-5'>脚本</b>分享

    [分享资料]Linux Shell Scripting Cookbook图灵程序设计丛书:Linux Shell脚本攻略

    ,《Linux Shell脚本攻略》的内容由浅入深且紧贴实践,使得他们能够快速地学以致用,而专业人士也能从《Linux Shell
    发表于 09-11 23:56

    Qt快速入门攻略

      本手册是广州天嵌计算机科技有限公司与Qter开源社区联合出品的入门教程,基于天嵌E9卡片电脑,目的是让E9用户可以快速完成Qt环境搭建并开始Qt嵌入式编程。该教材中使用了最新的Qt 5.4.0
    发表于 10-26 11:46

    LINUX SHELL脚本攻略(中文版带书签)

    LINUX SHELL脚本攻略(中文版带书签)网络资源仅供大家学习
    发表于 12-13 09:47

    Linux系统学习之路---脚本体会

    们大大提高工作效率。这也是自动化运维管理的重要基础。把之前系统的操作命令,按一定的顺序及格式放到文件里。 再次执行相同的操作时,直接运行脚本就可以。 它可以帮助我们实现功能需求。就是有批量批量的服务器
    发表于 01-28 20:51

    Linux下组态,快速实现监控系统

    `基于紫金桥跨平台跨平台实时数据库,可Linux系统快速实现一个监控系统。1、组态流程和传统windows组态差不多,所以上手很快。2、不
    发表于 12-23 15:46

    如何通过Linux系统的Shell用户访问操作系统内核服务

    1、Linux Shell编程介绍Shell 是一个 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务。Shell 既是一种命令语言,又是一种
    发表于 06-14 16:50

    Linux脚本教程

    Linux脚本教程
    发表于 10-30 15:48 12次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>脚本</b>教程

    linux shell 脚本入门

    1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行
    发表于 11-07 15:44 11次下载

    Linux常见调用shell脚本的三种方法

    编写Linux下的应用程序时有时需要调用Linux的相关shell脚本,在这些脚本中通过调用Linux
    的头像 发表于 06-28 14:28 8172次阅读

    Linux系统命令及shell脚本实践指南

    Linux系统命令及shell脚本实践指南资料下载。
    发表于 06-01 14:47 27次下载

    运维常用的34个Linux Shell脚本

    Shell 脚本编程是在 Linux 下学习或练习编程的最简单的方式。尤其对运维工程师处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能。
    的头像 发表于 05-09 15:26 1275次阅读

    Linux系统中调用脚本的常见方法

    linux系统中有多种方法可以在系统启动后调用脚本,接下来介绍几种常见的方法
    的头像 发表于 12-13 18:16 507次阅读