MacBook 上定期執行 Bash Shell
以 macOS 為 Big Sur 的 MacBook Pro 示範
小序言
在 MacBook 上,你可能會有些事情定期需要去做。
時不時會更新
brew
然後升級已透過brew
安裝的套件
或是未來某個特定時間已經確定會透過 MacBook 辦的事情。
啊,下下週三早上需要寄個信給彌豆子
這些事情都能夠透過 MacBook 裡頭內建的 Automator 搭配蘋果行事曆來辦到。花個數分鐘設定,交給工具來替你執行這些瑣碎的項目,你就不用在耗費精神嘗試記住這些小事,而是全力投入心力在追《昨日的美食》或是安心地浸淫在被《隻狼》虐得通體舒暢的幸福裡面。
範例
定期清理一個特定目錄底下所有子目錄的內容
準備工作
首先,我們準備一個可以清理特定目錄底下所有子目錄內容的 bash shell 腳本。
currentDirectory="/Users/hero.boy"
cd ${currentDirectory}
subDirectories=$(ls -d */)
for item in ${subDirectories}; do
pushd ${item}
rm -rf ./*
echo "Finished cleaning ${currentDirectory}${item}"
popd
done
製作服務
接著在啟動台搜尋 Automator ,將它打開。在跑出來的視窗中點擊新文件,接著在點擊「快速動作」,在搜尋欄中搜尋「shell」,點擊「執行 Shell 工序指令」兩次,將上述腳本內容複製然後貼到指令視窗中。
貼上腳本內容後,需要調整一些設定。將接受相關的那個欄位選擇「沒有輸入」,然後目的地選擇「Finder」和「Calendar」。
你可以在視窗右上角選擇執行看看結果,沒有問題後,就可以按下 ⌘ + S 以好識別的名稱儲存這個服務。這時,你到 Finder 的服務中理論上會出現你剛剛製作好的服務才對。
定期執行自訂服務
這時你點這個自製服務,就會將指定目錄底下的所有子目錄的內容給清除掉,但還差了一步,那就是定期執行這一部分。我們可以透過行事曆來辦到這件事。只要你剛剛製作服務時的目的地有記得選行事曆,那麼接下來就是打開行事曆。
先新增一個事件,你想要每週三執行,那麼就
- 先建立一個週三的事件。
2. 在重複執行那裏選擇是,週期選擇每一週。
3. 接著在「提示」那裏選擇「自訂」,然後選擇「打開檔案」到服務目錄(~/Library/Services/)底下選擇你剛剛做好的服務。
4. 提示時間選擇「事件發生時」。
完成後,每週三的指定時間這個服務就會被執行啦!
參考
- Vandersteen, J., n.d. How To Schedule Automator Tasks In Mac OS X. [online] Small Business — Chron.com. Available at: <https://smallbusiness.chron.com/schedule-automator-tasks-mac-os-x-39132.html> [Accessed 13 November 2020].
- andilabs, 2013. Location Of Services Created In Automator. [online] Ask Different. Available at: <https://apple.stackexchange.com/questions/14030/location-of-services-created-in-automator> [Accessed 13 November 2020].