当前位置:首页>Linux>微软把 Linux 命令直接搬进了 Windows

微软把 Linux 命令直接搬进了 Windows

  • 2026-10-11 05:51:37
微软把 Linux 命令直接搬进了 Windows

对于同时在 Windows 和 Linux/macOS 之间切换的开发者来说,最痛苦的事情之一莫过于命令行的“割裂感”:在 Linux 上习惯的 ls、cp、grep 到了 Windows 上要么不存在,要么行为怪异。虽然 WSL、Git Bash、MSYS2 等工具提供了变通方案,但它们通常需要额外的运行时环境或兼容层,无法做到真正的 Windows 原生集成。

现在,这一切有了官方的“解药”。微软近期在 GitHub 上开源并维护了一个名为 Coreutils for Windows 的项目。这不仅仅是一个简单的工具包移植,而是微软试图抹平跨平台开发体验差异的一次重要尝试。

项目地址:https://github.com/microsoft/coreutils

项目简介

简单来说,Coreutils for Windows 是微软官方构建并打包的一套 Windows 原生命令行工具集。它基于活跃的开源项目 uutils/coreutils、findutils 和 grep 进行整合。

这意味着你可以直接在 Windows CMD 或 PowerShell 中使用你熟悉的 ls、cat、mv、find 等命令。

项目目前处于 Preview(预览) 阶段,但核心功能已经非常稳定,足以替代日常的 Windows 命令行操作。

快速上手:安装与使用

安装 Coreutils for Windows 非常简单,微软推荐使用 Windows 包管理器 WinGet 进行一键安装。

1. 安装方法如果你已经安装了 WinGet(Windows 10/11 默认自带或可通过 Microsoft Store 安装),只需打开终端(PowerShell 或 CMD)并执行以下命令:

winget install Microsoft.Coreutils

当然,你也可以前往项目的 https://github.com/microsoft/coreutils/releases 手动下载安装包进行安装。

2. 使用体验安装完成后,你就可以在终端中直接使用标准的 UNIX 命令了。例如:

  • • ls -la:列出目录内容。
  • • cat filename.txt:查看文件内容。
  • • find . -name "*.log":在当前目录及子目录中查找日志文件。

它如何处理 Windows 的“特殊性”?

虽然目标是统一,但 Windows 和 UNIX 在底层机制上仍有巨大差异。Coreutils for Windows 在处理这些差异时做得很巧妙:

  • • 路径分隔符智能识别:它同时支持 / 和 \ 作为路径分隔符。虽然输入时两者皆可,但部分工具输出时可能会根据 Windows 习惯使用 \,这对于习惯了正斜杠的用户来说是一个需要注意的小细节。
  • • 行尾符(CRLF)处理:Windows 默认使用 CRLF (\r\n) 作为换行符,而 Linux 使用 LF (\n)。大多数工具能自动处理这种差异,但在进行精确的字节计数或正则匹配时,用户仍需留意。
  • • 权限模型差异:Windows 使用 ACL(访问控制列表),而 Linux 使用 POSIX 权限位。因此,基于权限的谓词(例如 find -perm )可能会表现不同或不可用。
  • • 不支持/dev/null:使用 NUL 代替,例如 find . -name "*.log" > NUL。

版本兼容性与注意事项

在使用前,请务必注意以下几点,以避免踩坑:

  1. 1. PowerShell 版本要求官方明确指出,需要 PowerShell 7.4 或更高版本。如果你使用的是旧版 PowerShell(如 5.1),可能会遇到兼容性问题或不被支持。
  2. 2. 命令冲突(Shell Conflicts)这是迁移过程中最容易遇到的问题。许多命令(如 echo、dir、copy)在 Windows 原生环境中已有定义。
    • • CMD:通常能较好地覆盖,但需注意 PATH 环境变量的顺序。
    • • PowerShell:情况较复杂。PowerShell 有许多内置的别名,例如 ls 其实是 Get-ChildItem 的别名。即使安装了 Coreutils,PowerShell 可能仍优先调用内置命令。
  3. 3. 缺失的命令并非所有的 Linux 命令都有对应。由于 Windows 内核机制不同,项目故意剔除了部分命令,例如:
    • • dd:将来可能会有。
    • • dircolors , shred , sync , uname: 在 Windows 上没啥用。
    • • chcon , chgrp , chmod , chown , chroot , groups , hostid , id , install , logname , mkfifo , mknod , nice , nohup , pinky , runcon , stdbuf , stty , tty , users , who : 由于 Windows 与 Linux 采用不同的权限模型,这些依赖 POSIX 权限语义的工具目前未被提供。

最新文章

随机文章