首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >微软发布 Coreutils for Windows:Linux 命令原生进入 Windows 11,开发者终于不用反复切换环境了

微软发布 Coreutils for Windows:Linux 命令原生进入 Windows 11,开发者终于不用反复切换环境了

作者头像
井九
发布2026-06-04 09:28:03
发布2026-06-04 09:28:03
190
举报
文章被收录于专栏:四楼没电梯四楼没电梯

在 2026 年 Build 开发者大会上,微软正式发布了 Coreutils for Windows 项目,将大量 Linux 常用命令以原生 Windows 应用的形式带到了 Windows 11 中。

这意味着开发者无需安装 WSL、Git Bash、Cygwin 等额外环境,就可以直接在 Windows 上使用熟悉的 lscpgrepfindrm 等命令。

项目已经开源:

项目地址:

Microsoft Coreutils GitHub 项目


为什么微软要做 Coreutils?

对于跨平台开发者来说,一个长期存在的问题是:

  • Linux 服务器使用 Bash
  • macOS 使用 Unix 环境
  • Docker 容器内部是 Linux
  • CI/CD 流水线通常也是 Linux

而开发机却经常是 Windows。

于是经常会出现这种情况:

代码语言:javascript
复制
# Linux
ls -la
cp file1 file2
grep "error" app.log
find . -name "*.js"

到了 Windows:

代码语言:javascript
复制
dir
copy
findstr
where

脚本需要改写。

团队文档需要维护多个版本。

自动化工具链需要额外适配。

很多开发者最终选择:

  • 安装 WSL
  • 使用 Git Bash
  • 使用 MSYS2
  • 使用 Cygwin

来获得统一的命令行体验。

微软此次推出 Coreutils 的核心目标就是:

让 Linux、macOS、WSL、Docker 和 Windows 使用同一套命令与脚本。

官方描述非常直接:

The same commands, flags, and pipelines work the same way.

即:

同样的命令、同样的参数、同样的管道操作,在 Windows 上也能直接运行。


Coreutils 是什么?

严格来说:

GNU Coreutils 本身并不是微软开发的。

它是 Linux 世界最基础的一组工具集合。

例如:

命令

功能

ls

查看目录

cp

复制文件

mv

移动文件

rm

删除文件

cat

查看文件内容

pwd

当前目录

mkdir

创建目录

sleep

延时

hostname

主机名

tee

输出重定向

Linux 用户每天都会使用这些命令。

微软此次发布的并不是 GNU Coreutils 本体,而是基于:

uutils 项目

进行构建。


Rust 重写的 GNU Coreutils

微软选择的技术路线很有意思。

其底层并非 GNU 官方实现,而是:

uutils

一个使用 Rust 编写的 GNU Coreutils 重构项目。

特点:

  • 开源
  • 跨平台
  • 安全性更高
  • 与 GNU Coreutils 高度兼容

微软在此基础上:

  • 集成 Coreutils
  • 集成 Findutils
  • 集成 Grep

最终打包成一个 Windows 原生工具集。


如何安装?

安装非常简单。

使用 WinGet:

代码语言:javascript
复制
winget install Microsoft.Coreutils

安装完成后即可直接使用。

例如:

代码语言:javascript
复制
ls
grep
find
cp
rm
pwd

支持哪些 Linux 命令?

目前已支持大量常见命令。

包括:

代码语言:javascript
复制
cat
cp
date
echo
find
grep
hostname
ls
mkdir
mv
pwd
rm
rmdir
sleep
sort
tee
uptime

例如:

代码语言:javascript
复制
ls -la

find . -name "*.log"

grep ERROR app.log

cat config.yaml

这些命令可以直接在 Windows 中运行。


微软用了一个非常巧妙的设计

很多人以为微软会这样做:

代码语言:javascript
复制
ls.exe
cp.exe
cat.exe
rm.exe
grep.exe
...

实际上并不是。

微软只提供:

代码语言:javascript
复制
coreutils.exe

一个可执行文件。


利用 NTFS 硬链接实现多命令

安装后会创建:

代码语言:javascript
复制
ls.exe
cp.exe
cat.exe
rm.exe
pwd.exe

但这些文件并不是独立程序。

它们都是:

代码语言:javascript
复制
coreutils.exe

的 NTFS Hard Link(硬链接)。

示意图:

代码语言:javascript
复制
             ┌──────────────┐
ls.exe ─────►│              │
cp.exe ─────►│ coreutils.exe│
rm.exe ─────►│              │
cat.exe─────►│              │
pwd.exe─────►│              │
             └──────────────┘

多个文件名实际上指向同一个文件。


工作原理

当用户执行:

代码语言:javascript
复制
ls

Windows 实际加载的是:

代码语言:javascript
复制
coreutils.exe

程序启动后读取:

代码语言:javascript
复制
argv[0]

即:

代码语言:javascript
复制
ls.exe

然后判断:

代码语言:javascript
复制
当前是以 ls 方式启动

于是执行:

代码语言:javascript
复制
ls 功能

同理:

代码语言:javascript
复制
cp

实际上也是:

代码语言:javascript
复制
coreutils.exe

只是入口名字变成:

代码语言:javascript
复制
cp.exe

从而执行复制逻辑。


这种设计有什么好处?

1. 安装包更小

传统方案:

代码语言:javascript
复制
100 个命令
=
100 个 EXE

微软方案:

代码语言:javascript
复制
100 个命令
=
1 个 EXE
+ 99 个硬链接

几乎不占额外磁盘空间。


2. 更新更简单

升级时:

代码语言:javascript
复制
更新 coreutils.exe

即可。

所有命令同步获得新版本。


3. 降低维护成本

微软只需要:

代码语言:javascript
复制
维护一个二进制文件

而不是几十上百个可执行程序。


哪些命令没有提供?

并非所有 Linux 命令都能搬到 Windows。


与 Windows 冲突的命令

以下命令未提供:

命令

原因

dir

DOS 内置命令

more

Windows 内置命令

paste

Windows 已存在

whoami

Windows 已存在

expand

DOS 内置命令

例如:

代码语言:javascript
复制
dir

在 Windows 已经具有特殊含义。

微软不希望破坏现有脚本兼容性。


缺少 POSIX 能力

还有一批命令依赖 Linux 特有机制:

代码语言:javascript
复制
chmod
chown
chroot
nohup
tty
who
groups
id
stty

这些命令无法很好映射到 Windows。

因此被移除。


kill 为什么没有?

很多开发者第一时间发现:

代码语言:javascript
复制
kill

居然没有。

原因很简单:

Windows 没有完整 POSIX Signal 机制。

Linux:

代码语言:javascript
复制
SIGTERM
SIGKILL
SIGUSR1
SIGUSR2
SIGHUP

Windows:

代码语言:javascript
复制
不存在对应实现

因此:

代码语言:javascript
复制
kill
timeout

都没有进入此次版本。

不过微软表示未来可能探索类似实现。


Windows 与 Linux 的几个关键差异

虽然 Coreutils 已经尽可能兼容 Linux,但仍有一些需要注意的地方。


CRLF 与 LF

Linux:

代码语言:javascript
复制
\n

Windows:

代码语言:javascript
复制
\r\n

某些脚本处理时可能产生差异。

例如:

代码语言:javascript
复制
grep
sed
awk

在极端场景下可能受影响。


没有 /dev/null

Linux:

代码语言:javascript
复制
find . > /dev/null

Windows:

代码语言:javascript
复制
find . > NUL

需要注意替换。


文件权限机制不同

Linux:

代码语言:javascript
复制
chmod 755

Windows:

代码语言:javascript
复制
ACL

因此:

代码语言:javascript
复制
find -perm

等权限相关操作可能行为不同。


路径分隔符差异

Linux:

代码语言:javascript
复制
/

Windows:

代码语言:javascript
复制
\

虽然大多数工具同时支持两种形式,但在复杂管道脚本中仍需留意。


这对开发者意味着什么?

对于以下人群影响尤其明显:

后端开发
代码语言:javascript
复制
grep
find
sort
tee

可直接使用。


DevOps 工程师

大量 Linux 运维脚本可直接迁移。

例如:

代码语言:javascript
复制
find . -name "*.log" | grep ERROR

无需改写。


容器开发

Docker 与本地开发环境进一步统一。


AI 与数据工程师

大量开源项目安装文档直接可用:

代码语言:javascript
复制
cat
grep
find
tee

无需寻找 Windows 替代命令。


微软正在把 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 命令,而是微软推进跨平台开发体验统一的重要一步。

其核心价值在于:

  • 原生支持 Linux 常用命令
  • 基于 Rust 的 uutils 实现
  • 无需 WSL 即可运行
  • 使用单一 coreutils.exe + NTFS 硬链接架构
  • 最大程度兼容现有 Linux 脚本
  • 降低跨平台开发成本

虽然由于 Windows 与 POSIX 架构差异,chmodchownkill 等命令暂时缺席,但对于绝大多数开发场景而言,常见的文件处理、文本处理和管道操作已经能够直接使用。

这意味着未来在 Windows 上打开终端后,输入:

代码语言:javascript
复制
ls
grep
find
cat
rm

将不再需要依赖 WSL 或 Git Bash,而是成为 Windows 的原生能力。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么微软要做 Coreutils?
  • Coreutils 是什么?
  • Rust 重写的 GNU Coreutils
    • uutils
  • 如何安装?
  • 支持哪些 Linux 命令?
  • 微软用了一个非常巧妙的设计
    • 利用 NTFS 硬链接实现多命令
    • 工作原理
  • 这种设计有什么好处?
    • 1. 安装包更小
    • 2. 更新更简单
    • 3. 降低维护成本
  • 哪些命令没有提供?
    • 与 Windows 冲突的命令
    • 缺少 POSIX 能力
    • kill 为什么没有?
  • Windows 与 Linux 的几个关键差异
    • CRLF 与 LF
    • 没有 /dev/null
    • 文件权限机制不同
    • 路径分隔符差异
  • 这对开发者意味着什么?
    • 后端开发
    • DevOps 工程师
    • 容器开发
    • AI 与数据工程师
  • 微软正在把 Windows 变成真正的开发平台
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档