Windows 原生 Unix 指令取代到 WSL?Coreutils 安裝、撞名同限制講清
3C 產品

Windows 原生 Unix 指令取代到 WSL?Coreutils 安裝、撞名同限制講清

圖片:via XDA Developers — https://www.xda-developers.com/windows-coreutils-native-unix-terminal-no-wsl/
TechLab 編輯部(譯)·

輕量文字處理好啱用,完整 Linux 開發環境照樣要留低

Microsoft 而家有官方維護嘅 Coreutils for Windows,可以直接喺 Windows 跑 grepfindxargslswcheadtail 呢類 Unix 指令。XDA 作者 Korbin Brown 用咗幾星期之後,話自己已經唔使長期開住 WSL tab,只為搜尋 log 或搵檔案。呢個用法幾合理,但標題所講嘅「取代 WSL」只適用於輕量工作,兩者覆蓋嘅範圍其實差好遠。

要另外安裝,Windows 冇突然內置 GNU 工具

Coreutils 唔係 Windows Update 完就自動出現,要先喺 PowerShell 輸入 winget install Microsoft.Coreutils,或者去官方 GitHub Releases 下載。裝完重開 terminal,套件會經 PATH 提供各個 .exe。Microsoft 呢個版本建基於 Rust 寫嘅 uutils/coreutils,再包埋 findutils 嘅 findxargs 同 GNU-compatible grep;所以佢係 Windows 原生程式,背後冇啟動 Linux kernel,亦唔使先入 WSL session。

安裝前仲要睇 PowerShell 版本。官方 README 寫明最低係 PowerShell 7.4,7.6 或以上先建議用 ~ 路徑;Windows 預載嗰個 Windows PowerShell 5.1 就唔合要求。裝完可以用 pwsh --version 核對版本,再用 Get-Command grep -Allwhere.exe grep 睇清楚實際行緊邊個執行檔。部機本身裝過 Git for Windows、GnuWin32 或其他 Unix ports,PATH 排位尤其值得查,否則同一個指令名可能指向另一套工具。

Windows Terminal 入面運行 Coreutils for Windows 指令嘅畫面

圖片:Microsoft

PowerShell 撞名先係最易中伏嗰位

PowerShell 一早將 lscatcpmvrmpwd 等名稱設成 cmdlet alias,所以裝咗 Coreutils,都唔代表打 ls 一定會開 Microsoft 嗰個版本。最直接嘅核對方法係 Get-Command ls -All;想指定原生工具,可以打 ls.execat.exe。官方亦警告,PowerShell alias 可能影響 binary stream pipeline,xargsfind 等工具經 pipe 串埋用時未必跟 Unix shell 完全一致。長期腳本最好寫清楚要用邊個程式,唔好靠每部機嘅 alias 同 PATH 剛好相同。

套件會用 PSReadLine 調整互動輸入,令 wildcard 同引號行為接近 Unix shell,但 PowerShell 嘅 escape character 仍然係 backtick,唔會變成 Bash 嗰套反斜線規則。換句話講,熟悉嘅 command 同 flag 多數喺度,shell grammar 仍然係 PowerShell。一段混有 Bash condition、subshell、環境變數寫法或 shebang 嘅 script,唔會因為裝多幾十個工具就自動變成 Windows script。

CRLF、路徑同權限仍然跟 Windows 規矩

跨平台 script 真正麻煩嘅位,多數唔係 grep 有冇得用。Windows 文字檔常見 CRLF,官方舉例指 uniq 做 byte-level 比較時,可能睇到行尾個 \r;路徑雖然接受 /\,部分指令輸出仍會用反斜線,交畀下一段 pipeline 就可能出事。/dev/null 亦要改用 NUL。呢啲差異對手動查一次 log影響唔大,但擺入 CI、批次轉檔或跨平台自動化,就要用真實輸入逐段驗證。

權限同程序控制嘅差距更實際。Windows 用 ACL,唔係 POSIX permission bits,find -perm 呢類條件可能表現唔同或者用唔到;建立 symbolic link 亦要開 Developer Mode 或用提升權限嘅 terminal。Windows 冇 SIGHUPSIGPIPESIGUSR 呢套 POSIX signals,套件亦冇提供 kill 同依賴佢嘅 timeout;要正常停程式,基本上只可以靠 Ctrl+Cchmodchownchrootnohupunameddtty 等工具同樣冇收錄。

邊啲工作可以慳返開 WSL

如果日常只係用 grep 篩 Windows log、用 find 掃 project 目錄、經 sortuniqwc 整理純文字,或者想喺 PowerShell 加幾段 GNU 風格 pipeline,Coreutils 已經相當啱用。XDA 作者亦話,原生 grepfind 掃大型 Windows 目錄時,主觀感覺快過經 WSL 存取同一批檔案;原文冇交出可重現 benchmark,所以比較適合當使用心得,唔應放大成通用效能結論。Git for Windows 同第三方 ports 以前都做到類似效果,今次優勢係由 Microsoft 包裝同維護,企業部署時亦較易交代同管理。

完整 Linux 開發環境就繼續留 WSL。要跑 Linux binary、Bash script、套件管理器、systemd service、Linux container,或者要同 production、CI 保持相同 filesystem semantics,幾個原生 command 補唔到嗰層兼容性。呢套工具其實係幫 Windows 補返常用 CLI 指令,減少為一個 grep 切去另一個環境;涉及 Linux runtime 同服務依賴,WSL 仍然有清楚用途。

發布狀態亦有少少混亂:Microsoft Build 2026 新聞頁稱 Coreutils for Windows 已經 generally available,但官方 GitHub README 截至 2026 年 7 月 26 日仍標示 preview。一般個人使用可以照裝,公司要納入固定映像、正式自動化或長期支援清單,最好先按 preview 規格評估,再留意 README 同 release notes 幾時統一講法。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook