运维知识
悠悠
2026年6月10日

微软把 ls、grep、cat 搬到了 Windows——这次不是闹着玩的

上周刷技术新闻,看到一条消息差点以为是恶搞:微软在 Build 2026 上正式发布了 Coreutils for Windows,把 75+ 个 Linux/Unix 命令原生搬到了 Windows 的 CMD 和 PowerShell 里。

ls、grep、cat、cp、mv、rm、find、head、tail、sort……全都有了。

注意——这不是 WSL,不是 Cygwin,不是 Git Bash,是原生跑在 Windows 上的。一个 4.6MB 的 Rust 编译二进制,winget install Microsoft.Coreutils 就装好了。

Satya Nadella 在 Build 的主题演讲上亲自演示了一把 grep:"Grep in full glory is now available for full Windows access." 那场面,Steve Ballmer 看了怕不是棺材板都按不住。

为什么我说这事比看起来大

如果你觉得这只是"方便了一下偶尔用 Windows 的 Linux 用户"——那格局小了。

先说个背景。微软那个 "Linux is a cancer" 的名言大家都还记得吧?那是 2001 年 Ballmer 说的。后来 WSL 出来的时候我们就已经感叹"时代变了",再后来 Azure 上 Linux 跑得比 Windows 还多也没人惊讶了。但这次不一样——这次微软是把 Linux 的命令行基础设施直接焊死在 Windows 内部了。

过去 Windows 开发者想用 Linux 命令有多痛苦呢?我列一下选项:

  • 装个 Git Bash,但只有一部分命令
  • 开个 WSL,但你的文件系统访问跨了两个世界
  • 搞个 Cygwin/MSYS2,但维护负担重,版本经常滞后
  • 用 PowerShell 的等价命令,但语法完全不一样

每次写个 README 里的命令示例,你都得加一句"Windows 用户请用 xxx 替代"。每次跨平台脚本,都得维护两套逻辑。这些年我在团队里见过无数次:明明是一个简单的 grep -r "ERROR" /var/log/ 的事,Windows 上就得折腾半天。

现在呢?一条命令装完,ls 就是 ls,grep 就是 grep,cat 就是 cat。flag 一样,行为一样,输出一样。

底层是 Rust 重写的 uutils

微软没有直接搬 GNU Coreutils——那玩意儿是 GPL 授权的,微软碰 GPL 就像碰了高压线。他们选了 uutils/coreutils 项目,这是一个社区用 Rust 从零重写 GNU Coreutils 的开源项目,MIT 授权。

用 Rust 重写有几个好处:

  1. 内存安全。Coreutils 这种底层工具如果有内存漏洞那影响面太大了,Rust 天然规避了这类问题。
  2. 跨平台设计。uutils 从一开始就是为了在 Windows/macOS/Linux 上都能跑而写的。
  3. MIT 协议。微软可以放心用,不用担心 GPL 传染的问题。

当然也有坑。Windows 和 Linux 的文件系统语义差异不是 Rust 能抹平的——盘符、路径分隔符、ACL 权限模型、大小写不敏感、符号链接行为,这些都是真实的差异。所以有些命令是缺席的:

  • chmodchownchroot 这些跟 POSIX 权限模型绑死的命令没有,因为 Windows 用 ACL
  • killtimeout 没有,因为 Windows 没有 POSIX 信号机制
  • ddshredsync 暂时也没有
  • dirdatewhoami 这些跟 Windows 内置命令冲突的,需要注意 PATH 优先级

实际用下来,日常 80% 的场景是覆盖的。我前两天在一台 Windows 开发机上试了下,ls -lagrep -rn "pattern" .cat file | sort | uniq -c,这些管道操作跑得很顺,速度甚至比 Cygwin 快不少(毕竟是 Rust 原生编译的)。

真正的野心:AI Agent 时代的基础设施

好了,到这里如果你觉得微软只是在"讨好开发者",那还是格局小了。

Build 2026 上微软同时宣布了另一个东西:OpenClaw for Windows

OpenClaw 是今年爆火的开源 AI Agent 框架,能让自主 Agent 在本地机器上执行复杂任务。这些 Agent 的执行逻辑是什么?跑 shell 命令、写脚本、操作文件系统、搜索日志——全是命令行操作。

之前 OpenClaw 用户疯狂买 Mac Mini 来跑,因为 macOS 天然有完整的 Unix 命令行。Windows 用户想跑?得装 WSL、配环境、折腾半天。

现在 Coreutils 一装,Windows 直接具备了 Agent 执行所需的命令行基础设施。OpenClaw 的 Agent 可以直接在 Windows 原生环境里 grep 日志、cat 配置文件、find 搜索目标文件、sort/uniq 处理数据。

The Register 的报道里有一段话很有意思:

Nadella's newfound love for grep probably has more to do with its recent popularity as an agent tool for finding the needles in the haystack.

翻译一下:Nadella 突然爱上 grep,不是因为他自己要在终端里搜日志,而是因为 AI Agent 需要 grep。

这就说通了。微软这波操作的时间线:

  1. 今年初 OpenClaw 爆火,但在 Windows 上跑不利索
  2. 微软发布安全警告,说无限制运行 OpenClaw 有安全风险
  3. Build 2026 同时发布 Coreutils + OpenClaw for Windows + Microsoft Execution Containers(MXC,Agent 沙箱策略层)

一套组合拳下来,微软想说的是:Windows 不只是能跑 Agent,而且是最安全、最合规的 Agent 运行平台。配合企业级权限管理、合规策略、Copilot 集成——这是在争 Agentic AI 时代的基础设施入口。

对我们意味着什么

站在一个做运维和 DevOps 的角度,我觉得这事有几个实际影响:

1. 跨平台脚本终于不用维护两套了

以前写部署脚本、CI pipeline,涉及 Windows 构建环境的时候总是头疼。现在如果目标机器装了 Coreutils,一套 shell 脚本基本能通吃。当然前提是你别用太多 bash-specific 的语法,尽量用 POSIX 兼容的写法。

2. Windows 上的故障排查姿势能统一了

以前在 Windows 上翻日志,要么用 PowerShell 的 Select-String(语法跟 grep 差得太远),要么开 WSL 绕一圈。现在直接 grep -rn "ERROR" C:\logs\ 就完事了。对于偶尔需要在 Windows Server 上排查问题的同学,这是实打实的效率提升。

3. 新人上手门槛降低

团队里如果有新来的 Windows 开发者,以前你得跟人解释"先装个 WSL"或者"用 PowerShell 的话 grep 的等价物是 Select-String"。现在直接一句 winget install Microsoft.Coreutils,完事。

4. 容器时代的最后一块拼图

Build 上还预览了 WSL Containers——直接在 WSL 里跑 Linux 容器,不需要 Docker Desktop。加上原生 Coreutils,Windows 作为容器开发环境的体验又近了一步。

一些槽点和注意事项

当然也不是没坑:

  • 命令冲突。Windows 自带的 sortfinddate 跟 Linux 版本同名但行为不同。如果你 PATH 里的顺序不对,可能会调错版本。建议安装后检查一下 where sort 确认优先级。
  • PowerShell 的 alias 冲突。PowerShell 默认把 ls alias 到 Get-ChildItemcat alias 到 Get-Content。装了 Coreutils 后可能需要手动处理 alias 优先级,或者直接在 CMD 里用。
  • 文件路径格式。Linux 用 /,Windows 用 \。虽然 Coreutils 做了兼容处理,但极端情况下还是可能踩坑,特别是路径中有空格或特殊字符的时候。
  • 还在预览阶段。官方说了,还是 preview,有些命令的行为可能跟 GNU 版本有细微差异。生产环境脚本建议先测试。

开源世界的态度

有意思的是,开源社区对这事的反应很分裂。

一边是务实派:"终于不用在 Windows 上受苦了,管它是谁出的。"

另一边是怀疑派:"微软搞 Embrace, Extend, Extinguish 那套又不是第一次了,这次会不会慢慢把标准带偏?"

我个人倒觉得还好。uutils 项目本身是开源的,MIT 协议,社区驱动。微软是在上面做了 Windows 适配和打包分发,但核心代码的方向还是社区控制的。而且老实说,开发者用脚投票——如果这东西真的好用,管它政治正确不正确呢。

实际上同一周还有另一个相关新闻:Drew DeVault(SourceHut 的作者)发布了 Vim Classic 的第一个 release——一个 fork 自 Vim 8.2 的版本,理由是不满 Vim 和 NeoVim 接受 AI 生成的代码贡献。

一边是微软拥抱 AI Agent 生态、把 Linux 命令搬进 Windows 给 Agent 用;另一边是资深开发者因为 AI 代码贡献而 fork 经典编辑器。这个对比挺有意思的——技术世界正在围绕 AI 发生深层次的分裂。


总的来说,微软 Coreutils for Windows 这事,表面上是"方便了一下开发者",实质上是在 Agentic AI 时代抢占操作系统层面的入口。从 WSL 到 Azure Linux 到 Coreutils,微软对 Linux 的态度早就从"cancer"变成了"if you can't beat them, absorb them"。

对我们这些日常跨平台工作的人来说,管它动机是什么呢——好用就完事了。下次在 Windows 上排查问题,不用再打开 WSL 绕路了。这就够了。

如果觉得这篇文章对你有帮助,欢迎点赞、转发、在看三连,让更多人看到。

公众号:耕云躬行录
个人博客:躬行笔记

文章目录

博主介绍

热爱技术的云计算运维工程师,Python全栈工程师,分享开发经验与生活感悟。
欢迎关注我的微信公众号@运维躬行录,领取海量学习资料

微信二维码