# WinuxCmd [English](README.md) | 中文 > 给 Windows 原生终端用的 Unix 风格命令层。 ![GitHub release (latest by date)](https://img.shields.io/github/v/release/unixwin/WinuxCmd) ![GitHub all releases](https://img.shields.io/github/downloads/unixwin/WinuxCmd/total) ![GitHub stars](https://img.shields.io/github/stars/unixwin/WinuxCmd) ![GitHub license](https://img.shields.io/github/license/unixwin/WinuxCmd) ![Windows Support](https://img.shields.io/badge/platform-Windows-blue) WinuxCmd 给 Windows 终端补上一层紧凑的 GNU 风格命令:`ls`、`cat`、 `grep`、`find`、`xargs`、`sed`、`sort`、`uniq`、`cp`、`mv`、`rm` 等等。 0.14 这一版开始,定位更明确:WinuxCmd 负责核心命令,WPM 负责管理 `awk`、`jq`、`rg`、`fd`、`fzf`、`bat`、`yq`、`7z`、`ffmpeg` 这类可携带的 外部二进制工具。 ```powershell winuxcmd ls -la winuxcmd grep --color=auto TODO README.md winuxcmd find . -name "*.cpp" -print0 winuxcmd wpm source list -v winuxcmd wpm search json winuxcmd wpm info jq ``` ## 演示 ![WinuxCmd Unix 风格工作流演示](DOCS/images/winuxcmd-unix-demo.gif) 高清录屏:[winuxcmd-unix-demo.mp4](DOCS/media/winuxcmd-unix-demo.mp4)。 ## 为什么需要 Windows 开发者每天都会从文档、CI 日志、issue 评论和肌肉记忆里遇到 Linux 风格命令。WinuxCmd 的目标不是把 Windows 伪装成 Linux,而是让这 些文本工作流在你已经使用的文件、终端、脚本和 CI 里直接可用。 重点是: - Windows 原生 exe、进程行为和路径。 - 高频 GNU 风格参数,够用、可预期。 - 能和 `tasklist`、`netstat`、`sc`、`ipconfig` 等 Windows 工具组成管道。 - 产物小,方便被 shell、安装包、CI 镜像和 portable 工具目录内置。 ## 安装 给 PowerShell、命令提示符、Windows Terminal、构建脚本和 CI 使用: ```powershell winget install caomengxuan666.WinuxCmd ``` 然后通过 `winuxcmd` 运行: ```powershell winuxcmd --version winuxcmd ls -la winuxcmd grep -n TODO src ``` 安装包也包含 `winux.ps1` 和 `winux.cmd`。在交互式 PowerShell 会话里, `winux activate` 可以暴露 `ls`、`cat`、`rm`、`grep`、`man` 等常见命令, 但不会要求你换掉整个 shell。 ## WPM WPM 是 WinuxCmd 自带的小型包和 hardlink 管理器。它不是 winget 的替代品。 WPM 适合: - 放在 `winuxcmd.exe` 同级目录的 portable 命令行 sidecar。 - 单文件 `.exe`,或者带明确文件映射的简单 `.zip`。 - Windows shell 工作流里常用的 Unix-like helper。 - 重建 hardlink,让命令可以直接按名字调用。 winget 更适合: - GUI 应用、运行时、SDK、服务、驱动和系统级安装器。 - 需要厂商安装逻辑、PATH 策略、文件关联或后台组件的工具。 官方 WPM 源已经独立出去: - Source repo: [unixwin/wpm-source](https://github.com/unixwin/wpm-source) - Raw index: `https://raw.githubusercontent.com/unixwin/wpm-source/main/index.json` - CDN index: `https://cdn.jsdelivr.net/gh/unixwin/wpm-source@main/index.json` 典型流程: ```powershell winuxcmd wpm source list -v winuxcmd wpm index update winuxcmd wpm search editor winuxcmd wpm info jq winuxcmd wpm links rebuild --root "C:\path\to\winuxcmd" winuxcmd wpm clean --dry-run winuxcmd wpm clean ``` `wpm clean` 默认只删除 `.wpm/cache` 和 `.wpm/staging`,不会删除已安装命令、索引或配置。可用 `wpm clean cache`、`wpm clean staging` 单独清理;外部程序优先使用硬链接安装,跨卷或文件系统不支持硬链接时自动回退为复制。硬链接不需要管理员权限,符号链接则保留给用户明确执行 `ln -s` 的场景。`wpm install ...` 支持一次顺序安装多个程序;某个程序失败不会阻止后续程序,最后会汇总失败数量。 包在没有架构 URL、SHA-256 和文件映射之前只会显示为 `index-only`。这样 WPM 可以先展示元数据,但只有经过校验的二进制才会真正安装。 更新 WPM 管理的 WinuxCmd 安装目录: ```sh winuxcmd wpm update winuxcmd ``` WPM 会先下载并校验新产物,再启动辅助进程,等当前进程退出后替换 `winuxcmd.exe`。它只更新当前 WinuxCmd 根目录,不会修改单独 Winuxsh release 包内自带的 `winuxcmd/` 副本。 ## Winuxsh 如果你想要更接近 bash 的 Windows 终端,可以直接用 [winuxsh](https://github.com/unixwin/winuxsh): ```text winuxsh = rubash shell engine + reedline frontend + winuxcmd command layer ``` winuxsh release 包会自带架构匹配的 `winuxcmd/` 目录。它应该和 winget 安装的 WinuxCmd 分开,这样 x64 和 arm64 shell bundle 才能稳定复现。 ### 可选 I18N 通过 WPM 安装可选中文语言包,然后显式启用: ```sh winuxcmd wpm install winuxcmd-i18n-zh-cn ``` Winuxsh 是主要支持的使用方式。把下面一行加入 `~/.winuxshrc`,这样每次 打开新的 Winuxsh 都会自动启用语言包: ```sh export WINUX_LANG=zh-CN ``` 重新加载 profile 或启动新的 shell,然后运行 `winuxcmd ls --help`。使用 `WINUX_LANG=off` 可以关闭语言包。Winuxsh 的 `export` builtin 会修改当前 shell 及其子进程;把同一行写入 `~/.winuxshrc`,就是持久化的 Winuxsh 配置。 ## 自带什么 WinuxCmd 目前实现 171 个命令,覆盖这些常见场景: - 文件:`ls`、`cp`、`mv`、`rm`、`mkdir`、`ln`、`stat`、`readlink`、`realpath` - 文本:`cat`、`grep`、`sed`、`sort`、`uniq`、`cut`、`head`、`tail`、`wc` - 搜索与组合:`find`、`xargs` - Windows 侧补位:`ps`、`lsof`、`which`、`tree`、`hexdump`、`strings` - WPM:`wpm source`、`wpm index`、`wpm list`、`wpm search`、`wpm info`、 `wpm install`、`wpm links` 详细兼容清单: - [命令兼容性矩阵 (ZH)](DOCS/zh/commands_implementation.md) - [GNU 兼容清单 (ZH)](DOCS/zh/gnu_coreutils_parity.md) - [Command Compatibility Matrix (EN)](DOCS/en/commands_implementation_en.md) - [GNU Parity Ledger (EN)](DOCS/en/gnu_coreutils_parity.md) ## 构建 ```powershell cmake --preset vs2022 cmake --build build-vs --target winuxcmd --parallel ``` 常用检查: ```powershell build-vs\tests\winuxcmd-tests.exe --gtest_filter=wpm.* ctest --test-dir build-vs -R "^(grep|find|rm)\." --output-on-failure ``` ## 链接 - [winuxsh](https://github.com/unixwin/winuxsh) - [WPM source](https://github.com/unixwin/wpm-source) - [贡献指南](CONTRIBUTING_ZH.MD) - [构建模式文档](DOCS/zh/build_modes.md)