說明
在 Windows 上,「命令列」並不是單一工具,而是一組可以互相替換的環境。常見的問題不是「哪個最好」,而是:
你現在的用途,適合哪一種命令列環境?
此外,還要區分兩個東西:
- 命令列環境(命令提示字元、PowerShell、WSL 等)
- 終端機模擬器(Windows Terminal、Cmder 等)
一般來說,命令列環境本身比終端機模擬器更重要。
這篇文章會先給你一個「可以直接用」的選擇,
再說明背後的理由,讓你之後可以自己判斷。
快速選擇
如果你不想花太多時間比較工具,可以直接用這組配置:
- 平時使用 WSL(建議 Ubuntu LTS)
- 用 Batch 命令稿控制命令列工具(但不要拿來處理文字)
- 必要時,在 Batch 中呼叫 PowerShell 5 補功能
👉 這組搭配的重點是:
- 日常操作交給 WSL(好用、通用)
- 發佈腳本維持 Windows 相容性
- PowerShell 當補強工具,而不是主體
想知道為什麼這樣選,可以繼續往下看。
原生命令列環境
命令提示字元(cmd)
這是 Windows 最早的命令列環境,目前主要用途是維持相容性。
適合情境:
- 簡單檔案操作
- 撰寫、測試 Batch 命令稿
- 需要確保目標機器一定能執行
它的限制也很明確:
- 指令功能偏少
- 不適合做複雜的管線(pipeline)處理
👉 重點不是「能不能做」,而是「做起來很痛苦」。
因此實務上:
不要勉強在命令提示字元裡串複雜指令,用命令稿會更好維護。
PowerShell
這是微軟後來推出、設計給現代 Windows 使用的命令列環境。
如果你的目標是:
- 管理 Windows 系統
- 自動化 Windows 工作
那 PowerShell 是正確方向。
目前分為兩個主要版本:
- PowerShell 5.x(內建)
- PowerShell 7.x(跨平台版本)
實務建議:
發佈用的命令稿,優先考慮 PowerShell 5
原因是:
- 內建可用(不用額外安裝)
- 版本穩定
- 相容性最好
PowerShell 7 雖然功能較新,但更新頻繁,不一定適合作為通用發佈環境。
WSL(Windows Subsystem for Linux)
WSL 本質上就是:
在 Windows 裡跑真正的 Linux 環境
這代表:
- 使用的是原生 Linux 指令
- 學到的技能可以直接帶到伺服器或雲端環境
常見用途:
- 程式開發(WSL 的主要設計目標)
- 指令串接與文字處理
- 執行 Docker(會有些微延遲)
預設 shell 是 Bash,也可以換成 Zsh 或其他環境。
不過在寫命令稿時建議:
優先使用 POSIX sh 語法,避免依賴 Bash、Zsh 的延伸特性
這樣可攜性會比較好。
實務使用上,通常會搭配 VS Code 透過 Remote WSL 開發,
變成「命令列 + GUI」的混合工作環境,相當方便。
第三方命令列環境
(不建議)Cygwin
提供 POSIX 環境與 Linux 工具。但在 WSL 出現後:
- 功能重疊
- 與現代工具(如 VS Code)整合較差
👉 除非是無法使用 WSL 的舊 Windows 系統,否則不建議。
MSYS2
主要用途是:
編譯原生 Windows 程式
它不是為日常命令列操作設計的環境。
👉 不建議當成日常 shell 使用。
強化命令列體驗
這些工具不會改變環境本質,但可以讓使用體驗更好。
clink
用於命令提示字元,提供:
- 自動補完
- 歷史記錄
- 類似 Bash 的操作體驗
PSReadLine
PowerShell 的自動補完工具,定位類似 clink。
整合型命令列環境
這類工具通常「很好用」,但有一個問題:
技能通常無法帶到其他環境
因此:
- 適合個人使用
- 不適合當成教學或發佈環境
Cmder
一個整合型終端機,支援多種命令列環境。
優點是開箱即用,但更新頻率較低,是否採用可自行評估。
(不建議)Babun
基於 Cygwin 的整合環境,目前已停止維護。
👉 不建議使用。