你们好,我是良许。程序员
咱们在平时工做的时候,为了测试产品的一些功能,咱们会写一系列的脚本,而且把它们放在同一个目录下。在作测试的时候,咱们一般会依次执行这些脚本,而后记录测试结果。面试
这样作的弊端是显而易见的,那就是效率过低。若是脚本数很少,你的「时间管理」能力又很强的话,那么问题不大。但若是脚本数不少,那么你极可能就有一拳打爆屏幕的冲动(别问我怎么知道,要不是个人同事拼死拉着,个人屏幕极可能已经爆了好几块了)。正则表达式
本文就给你们介绍三种一次性执行目录下全部脚本的方法。架构
首先推荐一个很实用,但你们不是很熟悉的命令:run-parts
。它的基本用法以下:学习
$ run-parts option <directory-path>复制代码
可是,并非目录下全部的脚本都会被执行,仍是会有一些命名要求的。脚本的名字知足如下条件才会被执行:大/小写、数字、下划线(_)、短杠线(-)。测试
为了能选出知足条件的脚本,咱们一般须要加上 --regex
选项。假如咱们的目录下有这些脚本:网站
因为脚本通常是以 .sh
结尾,因此若是你的命名都符合规则的话,想要执行全部脚本的话,能够这样操做:spa
$ run-parts --regex 'sh$' .复制代码
执行结果:code
若是你只想要执行以 s
开头,sh
结尾的脚本,能够结合以下正则表达式:cdn
$ run-parts --regex '^s.*sh$' .复制代码
执行结果:
固然了,你能够根据本身的脚本状况,写出对应的正则表达式。
为了防止误操做,在脚本真正执行以前,能够先看下将被执行的脚本会有哪些。咱们能够加上 --list
选项:
$ run-parts --list --regex '^s.*sh$' .复制代码
执行结果:
如结果所示,加上 --list
选项后,它只会列出将要执行的脚本,便于你的核对,并不会真正去执行这些脚本。
可是,run-parts
这个命令仍是比较小众,估计不少人并不知道这个命令,更不用说知道怎么去使用了。另外一个执行目录下全部脚本的方法是使用 find
命令,这个你们会更熟悉一些。
具体来说,咱们可使用 find
命令来找到目标目录下全部的脚本,而后再使用 -exec
选项去执行找到的脚本。
$ find ~/scripts -maxdepth 1 -type f -executable -name 's*' -exec {} \;
STAY
HOME
STAY
SAFE复制代码
上面的命令是指定了只在 scripts/
目录这个层级下找脚本,可是,你还能够去掉这个限制,就能够搜索当前目录及其子目录下全部的脚本了:
$ find -maxdepth 1 -type f -executable -name '*.sh' -exec {} \;复制代码
若是你 Shell 的水平不错的话,那么 for
循环也是一个不错的选择。好比你想执行目录下全部以 s
开头的脚本,能够这样写:
$ for f in ~/scripts/s* ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done
STAY
HOME
STAY
SAFE复制代码
若是你想执行目录下全部的脚本,能够作一个小小的改动:
$ for f in ~/scripts/*.sh ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done
公众号:良许Linux
hello world!
STAY
HOME
STAY
SAFE复制代码
最后,最近不少小伙伴找我要Linux学习路线图,因而我根据本身的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。不管你是面试仍是自我提高,相信都会对你有帮助!目录以下:
免费送给你们,只求你们金指给我点个赞!
连接:pan.baidu.com/s/1_6uniaFV… 提取码:9pbc
也但愿有小伙伴能加入我,把这份电子书作得更完美!
推荐阅读: