microsoft/coreutils

GitHub: microsoft/coreutils

微软基于 Rust 编写的 uutils 项目,为 Windows 原生提供 UNIX 风格核心命令行工具,使跨平台脚本和工作流保持一致。

Stars: 4002 | Forks: 65

适用于 Windows 的 Coreutils

适用于 Windows 的 UNIX 风格核心实用程序。与你在 Linux、macOS 和 WSL 上使用的命令和管道完全相同 - 原生运行。

安装 · Shell 冲突 · Windows 注意事项 · 贡献

A Microsoft-maintained build of [uutils/coreutils](https://github.com/uutils/coreutils), [findutils](https://github.com/uutils/findutils), and [grep](https://github.com/uutils/grep) packaged as a single multi-call binary for Windows. The goal is to make moving between Linux, macOS, WSL, containers, and Windows frictionless: the same commands, flags, and pipelines work the same way, so existing scripts carry over without translation. Each command supports the standard `--help` flag for full syntax and options. **此项目目前处于预览阶段。**
## 安装 使用 WinGet 安装 Coreutils for Windows: ``` winget install Microsoft.Coreutils ``` 或者从我们的 [发布页面](https://github.com/microsoft/coreutils/releases/latest) 获取最新版本。
## 创建自定义别名 * PowerShell:在你的 `$PROFILE` 中使用 `Set-Alias ll 'ls'`,或者创建一个支持参数的函数,例如 `function ll { ls -la --color=auto @args }` * CMD:`doskey ll=ls -la $*` ## Shell 冲突 Several commands share names with built-ins in CMD and PowerShell. Whether the Coreutils version runs depends on the shell, the PATH order, and (for PowerShell) the alias table. 图例:✅ 提供且可用 · ⚠️ 提供但与内置命令冲突 · 🛑 未提供 | 命令 | CMD | PowerShell 7.4+ | 备注 | | ---------- | :--: | :-------------: | ----- | | `cat` | ✅ | ⚠️ | | | `cp` | ✅ | ⚠️ | | | `date` | ⚠️ | ⚠️ | | | `dir` | 🛑 | 🛑 | 与内置 DOS 命令冲突 | | `echo` | ⚠️ | ⚠️ | | | `expand` | 🛑 | 🛑 | 与内置 DOS 命令冲突 | | `find` | ✅ | ✅ | 原始 DOS 命令的集成移植版本 | | `hostname` | ✅ | ✅ | Windows 内置命令的超集 | | `kill` | 🛑 | 🛑 | 由于 Windows 缺少信号机制而不可用;但将来可能会实现某种形式的 SIGTERM/SIGKILL | | `ls` | ✅ | ⚠️ | | | `mkdir` | ⚠️ | ⚠️ | | | `more` | 🛑 | 🛑 | 与内置 DOS 命令冲突(可考虑使用 `edit` 作为替代) | | `mv` | ✅ | ⚠️ | | | `pwd` | ✅ | ⚠️ | | | `rm` | ✅ | ⚠️ | | | `rmdir` | ⚠️ | ⚠️ | | | `sleep` | ✅ | ⚠️ | | | `sort` | ✅ | ⚠️ | 原始 DOS 命令的集成移植版本 | | `tee` | ✅ | ⚠️ | | | `timeout` | 🛑 | 🛑 | 依赖于 `kill` 的功能 | | `uptime` | ✅ | ⚠️ | | | `whoami` | 🛑 | 🛑 | 与 Windows 内置命令冲突 |
## Windows 注意事项 | 差异 | 详情 | | --------------------- | ------ | | **CRLF 行尾** | Windows 文本文件通常使用 CRLF (`\r\n`)。大多数实用程序可以透明地处理这种情况,但面向字节的行为仍然可以观察到 `\r`;例如,如果输入使用 CRLF 且最后一行没有尾随换行符,`uniq` 可能会将最后一行视为与前一个重复行不同。 | | **没有 `/dev/null`** | 请改用 `NUL`,例如 `find . -name "*.log" > NUL` | | **无 POSIX 信号** | `SIGHUP`、`SIGPIPE` 和 `SIGUSR` 等信号不可用。`Ctrl+C` (`SIGINT`) 可按预期工作。 | | **路径分隔符** | `/` 和 `\` 均可接受。某些实用程序会生成以 `\` 分隔的输出,这可能会影响下游管道。 | | **文件权限** | Windows 使用 ACL,而不是 POSIX 权限位。基于权限的谓词(例如 `find -perm`)可能表现不同或不可用。 | | **符号链接** | 读取现有符号链接无需提升权限即可工作。创建新的符号链接需要开发者模式 ([**设置 > 系统 > 高级**](https://learn.microsoft.com/windows/advanced-settings)) 或具有管理员权限的终端。 | ### PowerShell 命令解析 安装程序通过 `PSReadLine` 将自身集成到交互式 PowerShell 会话中。 它确保带引号的表达式行为在某种程度上类似于 UNIX shell 或 CMD 下的行为: `echo *.txt` 将打印多个文件名,而 `echo '*.txt'` 将按字面意思打印 "*.txt"。 然而,有两个缺点: * PowerShell 的转义字符仍然是 \`,而不是 \\
虽然你可以在 Bash 中使用 `find . \( -foo -bar \)` 编写,但在 PowerShell 中你仍然需要编写 ``find . `( -foo -bar `)``。 * `Get-Command ls`、`Get-Help ls` 等仍然会将 `ls` 等显示为内置命令
由于 `PSNativeCommandPreserveBytePipe` 的限制,我们无法以更稳健的方式与 PowerShell 进行集成。 ### 故意移除 存在上游但因依赖仅限 POSIX 的概念、会破坏现有 Windows 脚本或仅仅在 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`:仅限 POSIX 的概念,在 Windows 上不可用。
## 贡献 欢迎提交 Bug 报告和 Pull Request。请参阅 [`CONTRIBUTING.md`](./CONTRIBUTING.md) 以了解有关仓库布局以及更改如何在此仓库与上游 uutils 项目之间流动的详细信息。
标签:AI合规, Awesome, CLI, CMD, coreutils, findutils, Git Bash替代, grep, IPv6, PowerShell, Rust, Shell, UNIX核心工具, uutils, WiFi技术, Windows工具, Windows系统, winget, 可视化界面, 命令行界面, 多调用二进制, 开源, 微软官方, 系统工具, 系统管理, 网络安全审计, 网络流量审计, 脚本兼容, 通知系统