Files
Knowledge/1 使用/Windows/Microsoft.Coreutils 用法.md
T

46 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Microsoft.Coreutils 包含了 **超过 75 个**原生的类 Unix 命令行工具。
该工具包的每个命令都支持标准的 `--help` 参数来查看完整用法。
这里按功能为你整理的常用命令列表:
| 功能分类 | 命令 (部分示例) | 描述 |
| :--- | :--- | :--- |
| **📁 文件与目录管理** | `ls`, `cp`, `mv`, `rm` | 列出、复制、移动/重命名、删除文件或目录 |
| | `mkdir`, `rmdir`, `touch` | 创建、删除目录,以及创建空文件或更新时间戳 |
| | `ln` | 在文件之间创建硬链接或软链接 |
| | `pwd` | 显示当前工作目录的完整路径 |
| **📝 文本处理** | `cat`, `grep` | 连接文件并打印到标准输出,以及在文件中搜索匹配模式 |
| | `head`, `tail` | 输出文件的开头或结尾部分 |
| | `cut`, `sort`, `uniq` | 切割、排序和去重文本行 |
| | `wc` | 统计文件的字节数、字数、行数 |
| | `diff` | 逐行比较两个文件的差异(来自 `uutils/coreutils`) |
| **⚙️ 系统查询与信息** | `date`, `hostname` | 显示或设置系统日期/时间,以及主机名 |
| | `df`, `du` | 显示磁盘空间使用情况和文件/目录的磁盘占用 |
| | `echo`, `printenv` | 显示一行文本,或打印环境变量值 |
| | `id`, `whoami` | 显示用户身份信息 |
| | `uptime` | 显示系统已运行时间 |
| **🔐 校验与编码** | `md5sum`, `sha256sum` | 计算或校验文件的 MD5 或 SHA256 校验值 |
| | `base64`, `base32` | 以 base64 或 base32 方式编码或解码数据 |
| **🔍 查找工具** | `find`, `xargs` | 在目录树中搜索文件,以及从标准输入构建和执行命令行 |
> 此外,`sort` 和 `find` 这两个命令内部还集成了对 DOS 风格 `/switch` 参数的支持,以最大限度地兼容旧有的 CMD 脚本。
### 🛠️ 功能是完整的,但不是所有的
这是一个约 5MB 的轻量级工具包,采用了 **"单二进制 (multi-call binary)"** 的架构。安装后系统通过 `NTFS 硬链接 (NTFS hardlinks)` 创建 `ls.exe`、`cp.exe` 等命令入口,它们都指向同一个 `coreutils.exe` 主程序。
不过,有几个原因**导致部分命令被排除**:
1. **与系统内置命令冲突**:为避免混淆,以下命令未随包提供。
* `dir`, `more`, `expand`, `kill`, `timeout`, `whoami`, `paste`
2. **依赖缺失的 POSIX 功能**:因 Windows 不完全支持某些 POSIX 特性,以下命令未包含。
* `chmod`, `chown`, `chroot`, `nohup`, `tty`, `id`, `stty`, `who`
### 💡 命令冲突与解决方法
这些命令与系统原有的命令在 CMD 和 PowerShell 中可能存在冲突。例如,PowerShell 中的 `cat`、`ls`、`cp` 等命令本质上是内部别名,会优先于微软 Coreutils 版本被执行。
为了解决冲突,你可以:
* **使用完整路径**:直接调用 `C:\Program Files\coreutils\cat.exe` 来执行。
* **移除别名**:删除 PowerShell 配置文件中相关的别名,使 Coreutils 命令成为默认选项。
你有遇到过命令冲突的具体情况吗?如果想了解更多排查或设置默认命令的方法,随时告诉我~