Command Line Wizardry
由 darkranger 在 週曰, 11/14/2021 - 21:52 發表
Ars Technica 網站有一個寫得很好的教學專題:Command Line Wizardry,內容非常清晰易懂,說明了數種在 Unix-like 命令行介面下的實務操作需求。第一篇介紹 sed、awk 及 grep 這幾款常見的文字工具;第二篇則說明 Bash 的變數宣告、迴圈,以及進一步組織成批次化腳本執行的方式。很適合新手或者是像 DR 這種記憶力不好的人,作為隨手的參考資源。
不過其實 DR 自己很少寫 Bash 腳本,會寫成 Bash 腳本的,通常都是單純一連串的指令集合。但只要是更加程式化,或者邏輯性更重的,那麼只要環境許可,則多半會用 Python 來寫。這或許是因為,DR 始終覺得 Bash 腳本看起來像是火星文,不太對味……相形之下 Python 則清晰很多。
Bash 腳本的一個優勢,是很容易就可以擷取命令行程式的執行結果,處理後再傳送給其它程式執行。但其實在 Python 下也不難做到,特別是 Python 本身也有很方便的字串處理能力,而且有不只一種能夠執行外部程式的途徑。比方說,倘若是單純執行指令但不意欲取得結果的話,可以使用 os.system("command");至於若需要取得結果,則可以利用 os.popen("command").read() 的回傳值。不過需要留意的是,os.popen().read() 只會取得標準輸出(stdout)的訊息。倘若覺得有必要取得標準錯誤(stderr)之訊息,則需要再找尋其它的實作方式。