终于,Windows有了原生的「Linux终端」体验!无需Cygwin,无需WSL
作为一名长期在Windows和Linux双系统间切换的开发者,我一直对Windows的命令行环境爱恨交加。虽然PowerShell功能强大,但那种肌肉记忆般的Linux终端体验,却总是在切换平台时被打断——ls 对应dir,grep 换成了Select-String,更别说那些依赖管道符的复杂脚本了。
直到我发现了Coreutils for Windows——一个由微软官方维护的Windows原生工具集,它把Linux/macOS上熟悉的coreutils、findutils和grep等命令,打包成单个多调用二进制文件,直接运行在Windows上!
如获至宝:它到底是什么?
简单来说,这是一个“UNIX风格核心工具集的Windows原生实现”。你不再需要安装Cygwin这样的兼容环境,也不需要启动WSL子系统,就能在Windows的PowerShell或CMD中直接使用你熟悉的Linux命令:
# 现在你在Windows里也能这样写了!
ls -la | grep .log | xargs rm
find ./src -name "*.js" -mtime -7
chmod +x script.sh
所有你常用的命令——cat,cp,mv,sed,awk,tar… 全部都在,而且行为与Linux/macOS环境高度一致。
为什么说它值得一试?
- 1.真正原生,零依赖
它不是一个模拟层,而是编译为原生的Windows可执行文件。安装后只有一个主二进制文件,通过多调用模式(multi-call binary)动态链接到各个工具命令,干净利落。 - 2.无缝衔接现有脚本
如果你有在Linux下写的Shell脚本,现在几乎可以不加修改地在Windows上运行。再也不用为两个平台写两套部署脚本了。 - 3.智能解决命令冲突
项目中很贴心地标注了与Windows自带命令冲突的情况(比如find、sort在CMD中已有定义),并提供了清晰的冲突说明表。在PowerShell中,你可以通过完整路径或别名设置灵活调用。 - 4.支持标准帮助和参数
每个工具都支持--help 查看用法,命令行参数与GNU版本保持一致,学习成本几乎为零。 - 5.微软官方维护,持续优化
作为微软主动维护的项目,其与Windows的兼容性和未来生态支持值得期待。目前虽处于预览阶段,但基础命令已经相当稳定。
我是这样安装和使用的
只需要一行命令,用Windows自带的包管理器winget即可安装:
winget install Microsoft.CoreUtils
安装完成后,打开PowerShell 7.4+(注意要求版本),你就可以直接尝试:
ls | head -n 5
which python
echo "hello" | base64
如果你在CMD中使用,建议通过完整路径调用(例如coreutils ls)以避免与内置命令冲突。
还有一些需要注意的地方
- • 某些高度依赖POSIX系统特性的命令(如
chown、mount)暂未提供,但对于大多数日常开发场景已足够覆盖。 - • 在PowerShell中,部分命令名与系统别名冲突,需要适当配置或使用完整路径。
- • 项目尚处于预览阶段,如果你遇到边界情况的bug,可以去Git仓库提交issue或PR。
写在最后
对我来说,这个工具的出现简直是一场“及时雨”。我不再需要为了跑一个简单的Shell脚本而切换系统或开启WSL,也不需要在Cygwin中配置复杂的环境。现在,我可以在Windows的PowerShell窗口中,继续用我熟悉的Linux命令处理文件、筛选日志、批量重命名……那种流畅的感觉,终于回来了。
如果你也是一个经常跨平台工作的开发者,或者单纯想让自己在Windows下的命令行操作更“Linux范儿”,不妨试试这个工具。相信你也会有一种“终于等到你”的欣慰。
相关链接:
- • GitHub项目页:https://github.com/microsoft/coreutils-for-windows
- • 通过WinGet直接安装:
winget install Microsoft.CoreUtils
(注:本文基于项目公开文档及实际试用体验撰写,项目仍处于活跃开发中,具体功能请以最新版本为准。)