菜单

Windows 指南

相关源文件

本指南介绍了特定于 Windows 环境的命令行工具和技术。它涵盖了原生的 Windows 命令行功能以及在 Windows 中访问类 Unix 工具的方法。有关跨平台工作的通用命令行技术,请参阅命令行基础

在 Windows 下获取 Unix 工具的方法

Windows 用户可以通过多种选项来访问类 Unix 命令行环境。

Cygwin

Cygwin 提供了一个在所有 Windows 版本上运行的全面的类 Unix 环境。

  • 本指南中介绍的大多数命令行工具都可以在 Cygwin 中“开箱即用”。
  • 通过 cygwin.com 提供的包管理器进行安装。
  • 提供了一个兼容层,可以将 Unix/POSIX API 转换为 Windows 等效项。

适用于 Linux 的 Windows 子系统 (WSL)

WSL 在 Windows 10 及更高版本中可用,它提供了一个与 Windows 集成的完整 Linux 环境。

  • 提供了一个熟悉的 Bash 环境和 Unix 命令行实用程序。
  • 与基于模拟的解决方案相比,提供更好的性能和兼容性。
  • 无法从 WSL 命令行直接执行 Windows 程序。

MinGW 和 MSYS

MinGW (Minimalist GNU for Windows) 主要专注于开发工具。

  • 最适合在 Windows 上使用 GCC 等 GNU 开发工具。
  • MSYS 包提供了 bash、gawk、make 和 grep 等实用程序。
  • 对于创建 Unix 工具的原生 Windows 移植特别有用。
  • 比 Cygwin 轻量级,但功能较少。

Cash

常用 Unix 命令的最小化实现。

  • 仅支持非常有限的 Unix 命令和选项子集。
  • 基于 JavaScript 的实现,可通过 npm 安装。
  • 仅适用于基本 Unix 命令需求。

来源:README.md576-582

原生的 Windows 命令行工具

即使不安装额外的环境,Windows 也包含了一些强大的命令行实用程序。

使用 WMIC 进行系统管理

Windows Management Instrumentation Command-line (WMIC) 使您能够查询和管理系统资源。

  • 执行和脚本化大多数 Windows 系统管理任务。
  • 查询硬件、软件和系统信息。
  • 示例:wmic os get caption,version (显示 Windows 版本)

网络工具

Windows 包含有用的原生网络工具,用于故障排除。

  • ping:测试网络连接。
  • ipconfig:显示网络配置信息。
  • tracert:跟踪网络数据包到达目标所经过的路由。
  • netstat:显示活动网络连接。

Rundll32 命令

直接从命令行执行 DLL 文件中的函数。

  • 格式:Rundll32 DLLName,FunctionName [可选参数]
  • 允许访问许多未通过标准命令暴露的 Windows 功能。
  • 示例:rundll32 user32.dll,LockWorkStation (锁定计算机)

来源:README.md585-590

Cygwin 技巧和窍门

对于选择 Cygwin 的用户,这些技巧可以提高生产力。

包管理

使用 Cygwin 的包管理器安装其他 Unix 程序。

  • 再次运行 Cygwin 设置程序以添加/删除包。
  • 使用 apt-cyg(如果已安装)作为命令行包管理器。

终端体验

使用 mintty 作为您的命令行窗口,以获得更好的体验。

  • 比 Windows Console 提供更好的终端仿真。
  • 可自定义的颜色和外观。
  • 正确处理 Unix 信号和组合键。

剪贴板集成

通过特殊设备文件访问 Windows 剪贴板。

  • 从剪贴板读取:cat /dev/clipboard
  • 写入剪贴板:echo "text" > /dev/clipboard

打开 Windows 应用程序

使用关联文件打开应用程序。

  • cygstart filename 使用其注册的 Windows 应用程序打开文件。
  • 示例:cygstart document.docx 在 Microsoft Word 中打开。

Windows 注册表访问

通过命令行访问 Windows 注册表。

  • 使用 regtool 查看和修改注册表项。
  • 示例:regtool get /HKEY_CURRENT_USER/Environment/PATH

路径转换

在 Windows 和 Cygwin 路径格式之间进行转换。

  • Windows 的 C:\ 驱动器在 Cygwin 中变为 /cygdrive/c
  • Cygwin 的 / 在 Windows 上显示为 C:\cygwin
  • 使用 cygpath 转换路径。
    • Windows 到 Cygwin:cygpath "C:\Program Files\app.exe"
    • Cygwin 到 Windows:cygpath -w "/home/user/file.txt"

来源:README.md592-604

常见的跨平台挑战

在 Windows 和类 Unix 环境中工作时,请注意这些差异:

路径差异

  • Windows 使用反斜杠(\),而 Unix 使用正斜杠(/)。
  • Windows 使用驱动器字母(C:),而 Unix 使用挂载点。
  • Windows 中的路径长度限制(传统 MAX_PATH 为 260 个字符)。

行尾符

文本文件具有不同的行尾约定。

  • Windows:CRLF(\r\n
  • Unix:LF(\n
  • dos2unixunix2dos 这样的工具可以进行格式转换。

命令差异

许多常用命令名称或选项不同。

任务UnixWindows (CMD)PowerShell
列出文件lsdirGet-ChildItemdir
查找文本grepfindstrSelect-String
设置变量export VAR=valueset VAR=value$VAR = "value"
显示路径echo $PATHecho %PATH%$env:PATH
清屏clearclsClear-Hostcls
查看文件cat filetype fileGet-Content file

文件权限

  • Windows 使用访问控制列表 (ACL)。
  • Unix 使用所有者/组/其他人权限 (rwx)。
  • Cygwin 试图在这两个系统之间进行映射。

来源:README.md570-604

其他资源

有关 Windows 命令行工具的更多信息

来源:README.md606-608