在 2026 年 Build 开发者大会上,微软正式发布了 Coreutils for Windows 项目,将大量 Linux 常用命令以原生 Windows 应用的形式带到了 Windows 11 中。
这意味着开发者无需安装 WSL、Git Bash、Cygwin 等额外环境,就可以直接在 Windows 上使用熟悉的 ls、cp、grep、find、rm 等命令。
项目已经开源:
项目地址:
Microsoft Coreutils GitHub 项目
对于跨平台开发者来说,一个长期存在的问题是:
而开发机却经常是 Windows。
于是经常会出现这种情况:
# Linux
ls -la
cp file1 file2
grep "error" app.log
find . -name "*.js"到了 Windows:
dir
copy
findstr
where脚本需要改写。
团队文档需要维护多个版本。
自动化工具链需要额外适配。
很多开发者最终选择:
来获得统一的命令行体验。
微软此次推出 Coreutils 的核心目标就是:
让 Linux、macOS、WSL、Docker 和 Windows 使用同一套命令与脚本。
官方描述非常直接:
The same commands, flags, and pipelines work the same way.
即:
同样的命令、同样的参数、同样的管道操作,在 Windows 上也能直接运行。
严格来说:
GNU Coreutils 本身并不是微软开发的。
它是 Linux 世界最基础的一组工具集合。
例如:
命令 | 功能 |
|---|---|
ls | 查看目录 |
cp | 复制文件 |
mv | 移动文件 |
rm | 删除文件 |
cat | 查看文件内容 |
pwd | 当前目录 |
mkdir | 创建目录 |
sleep | 延时 |
hostname | 主机名 |
tee | 输出重定向 |
Linux 用户每天都会使用这些命令。
微软此次发布的并不是 GNU Coreutils 本体,而是基于:
进行构建。
微软选择的技术路线很有意思。
其底层并非 GNU 官方实现,而是:
一个使用 Rust 编写的 GNU Coreutils 重构项目。
特点:
微软在此基础上:
最终打包成一个 Windows 原生工具集。
安装非常简单。
使用 WinGet:
winget install Microsoft.Coreutils安装完成后即可直接使用。
例如:
ls
grep
find
cp
rm
pwd目前已支持大量常见命令。
包括:
cat
cp
date
echo
find
grep
hostname
ls
mkdir
mv
pwd
rm
rmdir
sleep
sort
tee
uptime例如:
ls -la
find . -name "*.log"
grep ERROR app.log
cat config.yaml这些命令可以直接在 Windows 中运行。
很多人以为微软会这样做:
ls.exe
cp.exe
cat.exe
rm.exe
grep.exe
...实际上并不是。
微软只提供:
coreutils.exe一个可执行文件。
安装后会创建:
ls.exe
cp.exe
cat.exe
rm.exe
pwd.exe但这些文件并不是独立程序。
它们都是:
coreutils.exe的 NTFS Hard Link(硬链接)。
示意图:
┌──────────────┐
ls.exe ─────►│ │
cp.exe ─────►│ coreutils.exe│
rm.exe ─────►│ │
cat.exe─────►│ │
pwd.exe─────►│ │
└──────────────┘多个文件名实际上指向同一个文件。
当用户执行:
lsWindows 实际加载的是:
coreutils.exe程序启动后读取:
argv[0]即:
ls.exe然后判断:
当前是以 ls 方式启动于是执行:
ls 功能同理:
cp实际上也是:
coreutils.exe只是入口名字变成:
cp.exe从而执行复制逻辑。
传统方案:
100 个命令
=
100 个 EXE微软方案:
100 个命令
=
1 个 EXE
+ 99 个硬链接几乎不占额外磁盘空间。
升级时:
更新 coreutils.exe即可。
所有命令同步获得新版本。
微软只需要:
维护一个二进制文件而不是几十上百个可执行程序。
并非所有 Linux 命令都能搬到 Windows。
以下命令未提供:
命令 | 原因 |
|---|---|
dir | DOS 内置命令 |
more | Windows 内置命令 |
paste | Windows 已存在 |
whoami | Windows 已存在 |
expand | DOS 内置命令 |
例如:
dir在 Windows 已经具有特殊含义。
微软不希望破坏现有脚本兼容性。
还有一批命令依赖 Linux 特有机制:
chmod
chown
chroot
nohup
tty
who
groups
id
stty这些命令无法很好映射到 Windows。
因此被移除。
很多开发者第一时间发现:
kill居然没有。
原因很简单:
Windows 没有完整 POSIX Signal 机制。
Linux:
SIGTERM
SIGKILL
SIGUSR1
SIGUSR2
SIGHUPWindows:
不存在对应实现因此:
kill
timeout都没有进入此次版本。
不过微软表示未来可能探索类似实现。
虽然 Coreutils 已经尽可能兼容 Linux,但仍有一些需要注意的地方。
Linux:
\nWindows:
\r\n某些脚本处理时可能产生差异。
例如:
grep
sed
awk在极端场景下可能受影响。
Linux:
find . > /dev/nullWindows:
find . > NUL需要注意替换。
Linux:
chmod 755Windows:
ACL因此:
find -perm等权限相关操作可能行为不同。
Linux:
/Windows:
\虽然大多数工具同时支持两种形式,但在复杂管道脚本中仍需留意。
对于以下人群影响尤其明显:
grep
find
sort
tee可直接使用。
大量 Linux 运维脚本可直接迁移。
例如:
find . -name "*.log" | grep ERROR无需改写。
Docker 与本地开发环境进一步统一。
大量开源项目安装文档直接可用:
cat
grep
find
tee无需寻找 Windows 替代命令。
回顾近几年微软的动作:
时间 | 事件 |
|---|---|
2016 | 推出 WSL |
2019 | 推出 Windows Terminal |
2020 | 深度拥抱 Docker |
2021 | WSL2 成为主流 |
2023 | Dev Home 发布 |
2025 | AI 开发工具全面整合 |
2026 | Coreutils for Windows 发布 |
可以看到一个非常明显的趋势:
微软不再要求开发者适应 Windows,而是在主动让 Windows 适应开发者。
从 WSL 到 Terminal,再到如今的 Coreutils,Windows 与 Linux 的边界正在不断被削弱。
对于长期在多平台之间切换的开发者来说,这可能是近年来最实用的一项改进之一。
Coreutils for Windows 并不是简单移植几个 Linux 命令,而是微软推进跨平台开发体验统一的重要一步。
其核心价值在于:
coreutils.exe + NTFS 硬链接架构虽然由于 Windows 与 POSIX 架构差异,chmod、chown、kill 等命令暂时缺席,但对于绝大多数开发场景而言,常见的文件处理、文本处理和管道操作已经能够直接使用。
这意味着未来在 Windows 上打开终端后,输入:
ls
grep
find
cat
rm将不再需要依赖 WSL 或 Git Bash,而是成为 Windows 的原生能力。