当前位置: 首页 > Linux

自己在linux系统实现一个万能程序

时间:2023-04-06 11:55:44 Linux

大家好,我是梁旭。我们知道在Windows下有一个非常实用的神器叫做Everything,它可以在很短的时间内搜索到你想要的文件/目录,如下图所示:Linux下也有一些类似everything的工具。神器,比如:locate、Catfish、Tracker等,这些工具也很强大,这里就不一一演示了,有兴趣的朋友可以自行体验。不过其实我们也可以自己实现一个轻量级的everything,既可以满足自己的需求,又可以提升自己的技术,在程序员面前炫耀一番~废话不多说,直接上脚本吧:#!/bin/sh#lazyfind#GNUAll-PermissiveLicense#复制和分发此文件,无论是否修改,都允许在任何媒体中使用而无需版税,前提是版权#通知和此通知被保留。此文件按原样提供,#没有任何保证。##helpfunctionfunctionhelpu{echo""echo"Fuzzysearchforfilename."echo"$0[--match-case|--path]filename"echo""exit}##setvariablesMATCH="-iname"SEARCH="."##parseoptionswhile[True];doif["$1"="--help"-o"$1"="-h"];然后helpelif["$1"="--匹配大小写"-o"$1"="-m"];然后MATCH="-name"shift1elif["$1"="--path"-o"$1"="-p"];thenSEARCH="${2}"shift2elsebreakfidone##sanitizeinputfilenames##createarray,retainspacesARG=("${@}")set-e##catch明显的输入错误if["X$ARG"="X"];然后helpufi##performsear${ARG[*]}中的chfor查询;do/usr/bin/find"${SEARCH}""${MATCH}""*${ARG}*"done这个脚本不是良旭原创,但是国外小哥写的脚本还是很简洁的,并使用一些常用的shell编程技术。学好它也会提高你的shell编程水平。那么如何使用这个脚本呢?2020精选阿里/腾讯等一线公司面试简历进阶电子书公众号《良序Linux》后台回复“数据”免费获取第一步,创建脚本文件。例如创建的脚本文件为lazy_find.sh。$vimlazy_find.sh然后,我们复制上面脚本的内容,然后按:wq保存退出。接下来,我们使用chmod命令赋予脚本可执行权限:$chmod+xlazy_find.sh第二步是使用脚本搜索文件。最基本的用法就是在脚本名后面直接跟要查找的文件名。不需要跟上完整的名字,只需要跟上一部分,例如:$./lazy_find.shscr运行结果如下:可以看到这个脚本不仅可以搜索目录中的文件当前路径,还要搜索当前目录下的文件子目录和孙子目录,即具有递归搜索的功能。上面的用法是不匹配大小写的效果,也就是说可以同时匹配scr和scr。那么,想要区分大小写需要怎么做呢?只需添加-m选项。$./lazy_find.sh-mscr运行结果如下:可以看到,不再匹配到Scr。如果我们不想搜索当前目录,而是想搜索指定目录,只需要加上--path,指定我们要搜索的路径即可。比如我们要在自己的home目录下搜索包含关键字hello的文件/目录,可以这样运行命令:$./lazy_find.sh--path~hello运行结果如下:2020年精选阿里/腾讯等一线面试、简历、进阶、电子书公众号“良旭Linux”后台回复“数据”免费获取第三步、自定义命令调用脚本在上面的使用方法中,我们需要运行手动脚本文件,这样肯定很不方便。我们可以自定义一个命令,比如lf,运行这个命令的时候会自动调用脚本,这样可以大大提高效率。有Linux基础的朋友应该想到了,我们可以使用alias命令来实现这个效果。为了系统重启后能够使用lf命令,我们直接在.bashrc中修改。$vim~/.bashrc就在.bashrc文件末尾加这么一行:aliaslf=~/bin/lazy_find.sh#不要复制路径,自己写脚本路径!!添加语句后,按:wq保存并退出。然后,启用我们的修改:$。~/.bashrcOK,大功告成,我们可以在任何地方使用这个命令。小结在本文中,我们使用脚本来实现万物的一些基本功能。通过学习这个脚本,我们可以提高自己的Shell编程能力,同时学习如何自定义命令来调用自己的脚本。本文比较基础,适合初学者。看到的都是真爱,走之前怎么不竖个大拇指?您的“三通”是良旭继续创作的最大动力!关注原创公众号《良序Linux》,第一时间获取最新Linux干货!公众号后台回复【信息】【面试】【简历】获取精选一线大厂的面试、自我提升、简历等信息。关注我的博客:lxlinux.net