Google 在幾天前 (May 3, 2021) 在 GitHub 上開了一個新的 repo 。
一個以「我覺得 Bash 已經很好了,但是大多時候,大家想要用更方便的語言編寫腳本」為標語在大家面前出現了。
詳細內容前往 GitHub
https://github.com/google/zx
這裡只快速帶過幾個重點:
副檔名
.mjs
(在腳本外層包裹await
).js
執行方式
使用管線 (pipeline)
執行檔案
來自網路檔案
AWAIT 精神
在這裡發揮了 JavaScript 的特色,可以批次作業並且等待完成
await Promise.all([
$`sleep 1; echo 1`,
$`sleep 2; echo 2`,
$`sleep 3; echo 3`,
])
// 上傳到多伺服器
let hosts = [...]
await Promise.all(hosts.map(host =>
$`rsync -azP ./src ${host}:/var/www`
))
其他類似的 Node.js 工具
ShellJS
Shx
oclif: Node.JS Open CLI Framework
結論的部分…
zx 或許可以讓對於 bash 陌生的人有個新的切入點可以寫腳本,但個人認為如果是要取代小腳本的話,bash 仍然是一個比較有效率的寫法。若在很複雜的程式邏輯下,也有可能一開始就不會考慮使用 bash 了。
但有一點是很值得使用 zx 的方向:命令列工具。現在也有很多命令列工具是用 Node.js 撰寫的,我自己是用 oclif
這個套件,在終端機介面下的資料視覺化,寫起來還算容易。在往後撰寫命令列工具的時候, zx 或許也會是一個不錯的選項!