大家好,我是良許。 我們在平時工作的時候,為了測試產品的一些功能,我們會寫一系列的腳本,並且把它們放在同一個目錄下。在做測試的時候,我們通常會依次執行這些腳本,然後記錄測試結果。 這樣做的弊端是顯而易見的,那就是效率太低。如果腳本數不多,你的「時間管理」能力又很強的話,那麼問題不大。但如果腳本數很多 ...
大家好,我是良許。
我們在平時工作的時候,為了測試產品的一些功能,我們會寫一系列的腳本,並且把它們放在同一個目錄下。在做測試的時候,我們通常會依次執行這些腳本,然後記錄測試結果。
這樣做的弊端是顯而易見的,那就是效率太低。如果腳本數不多,你的「時間管理」能力又很強的話,那麼問題不大。但如果腳本數很多,那麼你很可能就有一拳打爆屏幕的衝動(別問我怎麼知道,要不是我的同事拼死拉著,我的屏幕很可能已經爆了好幾塊了)。
本文就給大家介紹三種一次性執行目錄下所有腳本的方法。
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
也希望有小伙伴能加入我,把這份電子書做得更完美!
有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章
推薦閱讀: