微软开源Coreutils for Windows:Rust重写的UNIX工具集正式登陆

2026年6月2日,微软正式发布了 Microsoft Coreutils for Windows 的首个正式版本 v2026.5.29,标志着这家操作系统巨头第一次以官方身份,把经过 Rust 重写的 UNIX 核心工具集原生地带到了 Windows 平台。对于长期在 Windows、Linux、macOS、WSL 与容器之间来回切换的开发者而言,这是一件期盼已久的事情。

一、项目背景:跨平台开发者之痛

长期以来,Windows 与 UNIX 生态之间存在一道隐形的"工具鸿沟":

  • 大量 CI 脚本、运维脚本、构建脚本默认依赖 lscatcprmgrepfind 这类 GNU 工具;
  • 开发者要么借助 WSL,要么依赖 Git for Windows、MSYS2、Cygwin 这类第三方移植,要么就只能把脚本"翻译"成 PowerShell —— 维护成本都不低;
  • 即使引入了第三方 GNU 工具,命令参数、行为细节也常常与 Linux 上的对应工具存在微妙差异。

微软 Coreutils for Windows 正是为了解决这个痛点:让 Linux、macOS、WSL、容器与 Windows 上的同一段命令、同一套参数、同一种管道组合,能够开箱即用地工作

二、项目简介

Microsoft Coreutils for Windows 是微软在 GitHub 上以 microsoft/coreutils 名义维护的开源项目。它并不是从零写起,而是站在开源社区的肩膀上

组件上游项目说明
核心工具集uutils/coreutilsGNU coreutils 的 Rust 重写版
查找工具uutils/findutilsGNU findutils 的 Rust 重写版
文本搜索uutils/grep新编写的 Rust 实现

这三套工具被打包成单一的多调用二进制文件,配合 DOS 时代 findsort 的兼容垫片、以及一个支持跨平台 glob 模式的 PowerShell 包装器,组成完整的 Coreutils for Windows 套件。

项目当前仍处于 preview(预览) 状态,仅在 2026 年 6 月 2 日发布了首个正式 Release。

三、技术亮点

从仓库的语言占比即可看出项目的技术组成:

语言占比用途
Rust39.1%核心二进制实现,继承自 uutils 上游
PowerShell35.1%构建脚本、CI/CD、辅助脚本
Inno Setup25.8%Windows 安装包打包

几个值得关注的点:

  • Rust 实现:在内存安全和性能上比传统 C 实现更有优势,也与微软近年来在 Rust 方向上的投入一脉相承。
  • 与上游同步:仓库 CONTRIBUTING.md 明确说明,代码变更会在本仓库与上游 uutils 项目之间流转——既享受了社区成果,也承担了同步责任。
  • MIT 许可:完全宽松的许可证,便于企业与个人在商业场景下使用。
  • 多调用二进制:以单一可执行文件承载上百个命令,部署与分发都更轻量。

四、安装与运行要求

最便捷的安装方式是通过 Windows 包管理器 WinGet 一键安装:

1
winget install Microsoft.Coreutils

也可以从 Release 页面 下载预编译二进制手动部署。

运行要求

  • 强制要求 PowerShell 7.4 或更高版本,旧版 PowerShell 不受支持;
  • CMD 可以使用,但部分功能受限;
  • 推荐 Windows 11,理论上也支持 Windows 10。

五、命令支持矩阵

Coreutils for Windows 并未"一股脑"把 GNU coreutils 的所有命令都搬过来,而是经过精心设计以避免破坏 Windows 现有生态。下面是核心命令的支持情况:

命令CMDPowerShell 7.4+备注
cat⚠️
cp⚠️
date⚠️⚠️
find集成自原 DOS 命令
hostnameWindows 内置的超集
kill🛑🛑Windows 缺乏信号支持
ls⚠️
mkdir⚠️⚠️
mv⚠️
pwd⚠️
rm⚠️
rmdir⚠️⚠️
sleep⚠️
sort集成自原 DOS 命令
tee⚠️
timeout🛑🛑依赖 kill 功能
uptime⚠️
dirmorewhoami🛑🛑与内置 DOS 命令严重冲突

图例:✅ 已发布且可用 · ⚠️ 已发布但与内置命令冲突 · 🛑 未发布

故意未包含的命令

以下命令虽然在上游 uutils 中存在,但因依赖 POSIX 独有概念可能破坏现有 Windows 脚本或在 Windows 上无实用价值而被移除:

  • 可能在未来加入dd
  • Windows 上无意义dircolorsshredsyncuname
  • 仅限 POSIX 概念chconchgrpchmodchownchrootgroupshostididinstalllognamemkfifomknodnicenohuppathchkpinkyrunconstdbufsttyttyuserswho

也就是说,如果你习惯了在 Linux 上 chmod 755 script.sh,那么在 Windows 的 Coreutils 套件里依然要使用 Windows 原生的 ACL 机制。

六、Windows 平台差异处理

Coreutils for Windows 的文档详细列出了 Windows 与 UNIX 之间的关键差异,以及在 Windows 上的应对策略:

差异点说明
CRLF 行尾符Windows 文本文件常用 \r\n,多数工具透明处理,但正则 $ 匹配与精确字节计数会受影响
/dev/null使用 NUL 替代,例如 find . -name "*.log" > NUL
无 POSIX 信号SIGHUPSIGPIPESIGUSR 不可用,但 Ctrl+CSIGINT)工作正常
路径分隔符/\ 都接受,但部分工具输出仍使用 \ 分隔
文件权限Windows 使用 ACL 而非 POSIX 权限位,find -perm 等谓词可能行为不同或不可用
符号链接读取已存在符号链接无需提权;创建新链接需要开发者模式或提权终端

这一节尤其值得开发者留意——> 之后不要写 /dev/null,而要写 NUL,这能省去很多踩坑时间。

七、当前状态与社区反响

截至本文撰写时(2026 年 6 月 3 日):

  • 首个正式版本v2026.5.29,发布于 2026 年 6 月 2 日
  • GitHub Stars:约 1.6k
  • Forks:21
  • 许可证:MIT
  • Issues / PRs:16 个开放 Issue,9 个开放 PR

社区对此次发布的反应以正面为主——在 release 页面中可以看到"🎉 庆祝"、"🚀 火箭"、"❤️ 红心"等表情反应相当密集。

八、为什么这件事值得开发者关注

微软 Coreutils for Windows 的发布,表面上是"多了几个命令",实质上意义远不止于此:

  1. 官方背书:这是微软首次以官方仓库身份维护 UNIX 工具集,长期支持与生态整合都有保障。
  2. 脚本可移植性大幅提升:今后编写跨平台脚本时,“先在 Linux 上跑通,再到 Windows 上跑"的工作流会顺畅很多。
  3. Rust 在系统编程领域的又一次胜利:核心系统工具的 Rust 重写趋势,从 ripgrep、fd、bat 一直延续到如今的 uutils 系列,生态越来越完善。
  4. 降低 WSL 依赖:对于一些原本"为了一两条命令就要切到 WSL"的工作场景,如今可以直接在 PowerShell 中完成。

九、总结

Microsoft Coreutils for Windows 是微软在 2026 年交出的一份诚意之作:它把经过开源社区验证的 uutils 系列工具,以官方身份整合到 Windows 平台,并细致地处理了与 Windows 现有命令的冲突问题。虽然目前仍处于 preview 状态、首个版本号 v2026.5.29 距离发布也才一天,但凭借微软的维护力度与 uutils 上游的成熟度,这个项目值得每一个跨平台开发者去尝试。

立即尝试

1
winget install Microsoft.Coreutils

然后打开 PowerShell 7.4+,敲下 lscatrm,感受一下"在 Windows 上像在 Linux 一样工作"的丝滑吧。

参考资料

本作品采用 CC BY-NC-SA 4.0 协议进行许可
使用 Hugo 构建
主题 StackJimmy 设计