大家好,我是良許,
我們在平時作業的時候,為了測驗產品的一些功能,我們會寫一系列的腳本,并且把它們放在同一個目錄下,在做測驗的時候,我們通常會依次執行這些腳本,然后記錄測驗結果,
這樣做的弊端是顯而易見的,那就是效率太低,如果腳本數不多,你的「時間管理」能力又很強的話,那么問題不大,但如果腳本數很多,那么你很可能就有一拳打爆螢屏的沖動(別問我怎么知道,要不是我的同事拼死拉著,我的螢屏很可能已經爆了好幾塊了),
本文就給大家介紹三種一次性執行目錄下所有腳本的方法,
1. run-parts
首先推薦一個很實用,但大家不是很熟悉的命令:run-parts ,它的基本用法如下:
$ run-parts option <directory-path>
但是,并不是目錄下所有的腳本都會被執行,還是會有一些命名要求的,腳本的名字滿足以下條件才會被執行:大/小寫、數字、下劃線(_)、短杠線(-),
為了能選出滿足條件的腳本,我們通常需要加上 --regex 選項,假如我們的目錄下有這些腳本:

由于腳本一般是以 .sh 結尾,所以如果你的命名都符合規則的話,想要執行所有腳本的話,可以這樣操作:
$ run-parts --regex 'sh$' .
執行結果:

如果你只想要執行以 s 開頭,sh 結尾的腳本,可以結合如下正則運算式:
$ run-parts --regex '^s.*sh$' .
執行結果:

當然了,你可以根據自己的腳本情況,寫出對應的正則運算式,
為了防止誤操作,在腳本真正執行之前,可以先看下將被執行的腳本會有哪些,我們可以加上 --list 選項:
$ run-parts --list --regex '^s.*sh$' .
執行結果:

如結果所示,加上 --list 選項后,它只會列出將要執行的腳本,便于你的核對,并不會真正去執行這些腳本,
2. find
但是,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 {} \;
3. for
如果你 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學習路線圖,于是我根據自己的經驗,利用業余時間熬夜肝了一個月,整理了一份電子書,無論你是面試還是自我提升,相信都會對你有幫助!目錄如下:

免費送給大家,只求大家金指給我點個贊!
鏈接:https://pan.baidu.com/s/1_6uniaFV0rdMWIdMwgZjbg
提取碼:9pbc
也希望有小伙伴能加入我,把這份電子書做得更完美!
有識訓?希望老鐵們來個三連擊,給更多的人看到這篇文章
推薦閱讀:
- 干貨 | 程式員進階架構師必備資源免費送
- 神器 | 支持搜索的資源網站
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/69079.html
標籤:Linux
上一篇:Ubuntu:E: Sub-process /usr/bin/dpkg returned an error code (1)
下一篇:上古神器vim系列之移動三板斧
