
Windows 官方 Coreutils 點裝點用:PowerShell alias 同 WSL 分別講清楚
Linux 常用指令原生進駐 Windows,但跨平台 script 仍有界線
Microsoft 將一批 Unix 常用指令正式搬入 Windows,對平時做 web、cloud、DevOps,或者跟 coding agent 產生指令嘅人幾實際。以往教學叫你用 grep、xargs 或 tail,Windows 用家往往要開 WSL、Git Bash,或者逐句改寫;而家其中一批工作可以直接喺 PowerShell 同 CMD 完成。不過原文將件事拉到「Windows 內置真正 Linux kernel」,容易令人撈亂兩套完全唔同嘅技術。
一行裝好,但記得重開 terminal
安裝方法好直接,喺 PowerShell 或 CMD 輸入 winget install Microsoft.Coreutils,完成後重開 terminal,等更新咗嘅 PATH 生效。Microsoft 呢個套件暫時仍屬 preview,要求 PowerShell 7.4 或以上版本,官方建議用 7.6 或以上先有較完整嘅 ~ 路徑支援。想確認實際叫緊邊個程式,可以用 Get-Command grep 或 Get-Command ls -All;每個工具亦支援 --help,唔使估參數有冇跟到。
套件底層用 Rust 寫,建基於 uutils/coreutils,再包埋 findutils 嘅 find、xargs 同 GNU-compatible grep。佢以 multi-call binary 形式安裝,再用 cat.exe、grep.exe、find.exe 呢類標準名稱提供指令。換句話講,呢啲係直接交畀 Windows 執行嘅原生 executable,冇啟動 Linux VM,亦冇 Linux kernel 喺背後接手。

圖片:Microsoft
PowerShell 打 ls,未必係你以為嗰個 ls
最大伏位係 PowerShell 本身一早將 ls、cat、cp、mv、rm 等名稱設成 cmdlet alias,而且 PowerShell 會先認 alias,之後先會喺 PATH 搵 executable。結果係裝完之後直接打 ls,PowerShell 仍可能叫緊 Get-ChildItem。最穩陣做法係寫明副檔名,例如 ls.exe -la、cat.exe file.txt;呢種寫法亦最適合放入要交畀其他人用嘅 script,避免每部機嘅 profile 設定唔同。
如果你想互動操作時直接打 Unix 名稱,可以逐個用 Remove-Item Alias:ls 移除今次 session 嘅 alias,確定冇影響原有工作後,再考慮將對應設定放入 $PROFILE。唔建議一次過清走全部 alias,因為舊 PowerShell script 可能預期 rm 叫緊 Remove-Item。另外,Microsoft 提醒用 PowerShell alias 包裝工具可能破壞 binary stream pipeline,xargs、find 呢類串接指令尤其容易出古怪結果。
Coreutils 同 WSL 2 做緊兩份工
Coreutils 適合處理檔案、文字同簡單 pipeline,裝完亦冇 Bash、apt、systemd、Linux package,或者完整嘅 Linux system call 環境。真正 Linux kernel 出現喺 WSL 2:Microsoft 用受管理嘅輕量 VM 跑 Linux kernel,Linux distribution 同程式亦喺嗰個環境入面運作。要跑 Docker workload、Linux binary、依賴 systemd 嘅服務,或者重現 production Linux 環境,用 WSL 2 仍然啱好多。
純粹想喺 Windows repo 搜尋字串、排序 log、複製檔案,或者照住 Linux 教學行幾條常用指令,Coreutils 就慳事過先開一層 WSL。佢亦直接操作 Windows 檔案同 Windows process,對要混用 Visual Studio、PowerShell、原生 compiler 同少量 Unix 工具嘅 workflow 幾順手。兩者可以同時裝,按工作揀工具,冇必要為咗幾條 grep pipeline 搬成個 project 入 Linux filesystem。
邊類跨平台 script 真係食到好處
最直接受惠嘅係由 Node.js、Python、Make、CI runner 或 coding agent 呼叫個別 executable 嘅流程,例如 grep 搜 log、cut 拆欄位、sort 配 uniq 去重、xargs 批量執行,或者 tail 睇輸出。呢類 script 將工具名稱同參數寫清楚,再避開平台專屬路徑,較容易喺 Windows、macOS 同 Linux 共用同一套工作邏輯。
至於完整 .sh script,裝 Coreutils 之後依然冇 shell 幫你解讀 shebang、loop、redirect 語法同環境變數規則。腳本一牽涉 chmod、chown、POSIX signal、/dev/null、symlink 建立權限,或者假設路徑一定用 /,就要分平台處理,嚴謹啲則繼續放喺 WSL 2 或 Linux CI 跑。Microsoft 自己都列明 chmod、chown、kill、uname 等工具冇跟套件提供。
方便咗,未去到完全 POSIX 相容
Windows 用 ACL,冇 POSIX permission bits;文字檔常見 CRLF,某啲 byte-oriented 操作仍會讀到 \r;部分工具輸出反斜線路徑,接落下一段 pipeline 時可能出問題;/dev/null 亦要改用 NUL。建立 symlink 仲可能要先開 Developer Mode 或用提升權限嘅 terminal。呢啲差異唔一定阻住日常用,但正式自動化流程最好同時喺 Windows 同 Linux 跑測試,唔好見到指令同名就當行為完全一致。
Microsoft 今次補返 Windows command line 多年來欠缺嘅一批常用工具。對平時連 Linux server、寫部署流程或者跟網上開發教學嘅 Windows 用家,確實少咗好多轉換成本;涉及 Linux runtime 同權限語意嘅工作,WSL 2 暫時仍然走唔甩。
參考來源
- XDA Developers — Microsoft called Linux a cancer, and now it ships a real Linux kernel inside Windows — original report
- Coreutils for Windows overview — Microsoft 官方安裝指南,確認 WinGet 指令、原生執行方式同套件組成。
- Microsoft Coreutils GitHub repository — 官方原始碼庫列出 PowerShell alias 衝突、版本要求、Windows 限制同刻意刪走嘅指令。
- Microsoft Coreutils latest release — 官方下載同最新 preview release 頁面。
- Comparing WSL Versions — Microsoft 官方文件確認 WSL 2 用受管理 VM 運行完整 Linux kernel,釐清同原生 Coreutils 嘅分別。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







