microsoft/coreutils
76 命令
上游把 Rust 版 coreutils 移植到 Windows 的成果,是整个二进制的地基。
源码 →91 commands · one binary · no WSL
microsoft/coreutils 打底,uutils 的 findutils、grep、sed、diffutils、tar 补齐, 再加几个只有 Windows 才需要的小工具 —— 合成一个原生 EXE,不依赖 MSYS2、Cygwin 或 WSL。
composition
面积与占比均取自各命令对应实现 crate 的 Rust 源码行数(docs/scripts/gen-data.mjs 自动生成,随源码变动)。行数不等于二进制体积贡献 —— 后者还受泛型实例化、LTO 与链接期裁剪影响。
install
从 Releases 取 coreutils-Titor-Z.exe,Inno Setup 打包,无需预装运行时。
运行安装器,自动写入 PATH,并为核心命令建立硬链接 —— 直接敲 sed 也能用。
新开一个终端,coreutils.exe --list 会列出全部 91 个命令。
sources
known gaps
下列能力在整合上游时被逐个实测过,结论是不接入、不包装 —— 与其提供一个会崩的命令, 不如让它明确报错。
| 能力 | 实测结论 | 原因 |
|---|---|---|
| awk 的 split / gsub / sprintf / for-in | 运行期崩溃 | 上游 todo!() 未实现 |
| diff3 / sdiff | 未实现 | 上游零实现 |
| egrep / fgrep | 未实现 | 零实现,可用 grep -E/-F 替代 |
| procps 的 ps / pidof | 运行期崩溃 | 依赖 /proc,Windows 不可用 |