MSYS 本身不是一个独立的命令,而是一个环境(Minimal SYStem),当你安装了 MSYS(MSYS2)并打开它的终端(如 MSYS2 MINGW64)后,你在这个终端里使用的命令,MSYS 命令。

这些命令主要分为三类:
- GNU Coreutils 命令:这是最常用的一类,它们是 Linux/Unix 环境下标准命令行工具的 Windows 移植版。
ls,cp,rm,mv等。 - MSYS 内部命令:一些由 MSYS 自身提供的、用于环境管理和文件路径转换的命令。
- Shell 脚本和编程语言:你可以在这个环境中运行 Bash 脚本、Python、Perl 等。
下面我们分类进行详细说明。
GNU Coreutils 命令 (最常用)
这些命令的行为和你在 Linux 或 macOS 终端中几乎完全一样,它们是你在 MSYS 环境中进行日常文件操作和程序管理的主力。
| 命令 | 功能 | 示例 |
|---|---|---|
ls |
列出目录和文件内容。 | ls -l (显示详细信息) ls -a (显示隐藏文件) ls /c/Windows (列出 C 盘 Windows 目录) |
cd |
切换当前工作目录。 | cd /home/user/myproject (切换到项目目录) cd .. (返回上一级目录) cd ~ (切换到用户主目录) |
pwd |
显示当前工作目录的完整路径。 | pwd (可能输出 /c/Users/YourName) |
cp |
复制文件或目录。 | cp source.txt destination.txt (复制文件) cp -r source_dir/ destination_dir/ (递归复制目录) |
mv |
移动文件/目录,或重命名。 | mv old_name.txt new_name.txt (重命名) mv file.txt /another/directory/ (移动文件) |
rm |
删除文件或目录。 | rm file.txt (删除文件) rm -r directory_name/ (递归删除目录) rm -f file.txt (强制删除,不提示) |
mkdir |
创建新目录。 | mkdir new_folder (创建单个目录) mkdir -p parent/child (创建多级目录,包括父目录) |
touch |
创建一个空文件,或更新文件的时间戳。 | touch newfile.txt (创建新文件) |
cat |
查看文件内容,或合并文件。 | cat file.txt (在终端显示文件内容) cat file1.txt file2.txt > combined.txt (合并两个文件) |
less / more |
分页查看文件内容(推荐使用 less)。 |
less long_log_file.log (上下箭头翻页,q 退出) |
grep |
在文本中搜索匹配的行。 | grep "error" log.txt (在 log.txt 中搜索包含 "error" 的行) |
find |
在目录树中搜索文件。 | find . -name "*.cpp" (在当前目录及其子目录中查找所有 .cpp 文件) |
man |
显示命令的帮助手册页。 | man ls (查看 ls 命令的详细用法说明) |
重要提示:路径格式 在 MSYS 中,路径使用 Unix 风格的正斜杠 。

- Windows 的
C:\Users\YourName在 MSYS 中表示为/c/Users/YourName。 - 你的 MSYS 用户主目录通常是
/home/YourMSYSUsername。
MSYS 内部命令
这些命令是 MSYS 特有的,主要用于处理 Windows 和 Unix 风格路径之间的转换,以及管理 MSYS 环境本身。
| 命令 | 功能 | 示例 |
|---|---|---|
pwd -W |
显示当前工作目录的 Windows 风格路径。 | pwd -W (可能输出 C:\Users\YourName) |
cygpath |
一个非常强大的路径转换工具。 | cygpath -w /c/Users/YourName (将 Unix 路径转为 Windows 路径) cygpath -u "C:\Users\YourName" (将 Windows 路径转为 Unix 路径) cygpath -a /proc/registry/HKEY_LOCAL_MACHINE/SOFTWARE (访问 Windows 注册表) |
export |
设置或显示环境变量。 | export PATH=$PATH:/usr/local/bin (将 /usr/local/bin 添加到 PATH) |
source |
在当前 shell 中执行脚本文件。 | source ~/.bashrc (重新加载 bash 配置文件) |
alias |
创建命令别名。 | alias ll='ls -alF' (创建 ll 命令,效果为 ls -alF) |
包管理器命令
这是 MSYS2 最核心、最强大的功能之一,通过包管理器,你可以轻松安装、更新、删除各种开发工具和库。
| 命令 | 功能 | 示例 |
|---|---|---|
pacman |
包管理器,类似 Linux 中的 apt 或 yum。 |
pacman -S base-devel (安装基础开发工具包) pacman -S git vim (安装 git 和 vim) pacman -Rs vim (移除 vim 包) pacman -Syu (同步数据库并升级所有包) pacman -Ss keyword (搜索包含 keyword 的包) |
MSYS2 的三个环境:
- MSYS2`: 提供一个完整的 Bash 环境,运行原生 MSYS 程序,主要用于构建和运行需要 POSIX 环境的应用。
- UCRT64 (MinGW-w64 UCRT runtime): 推荐用于现代 Windows 应用开发,编译的程序依赖最新的 UCRT (Universal C Runtime),与系统自带的 C 库兼容性最好。
- MINGW64 (MinGW-w64 GCC runtime): 使用 GCC 工具链,依赖较旧的 MSVCRT (Microsoft Visual C++ Runtime),兼容性也很好,但 UCRT64 是未来的方向。
你通常会使用 pacman 来在对应的环境中安装工具,例如在 UCRT64 终端中运行 pacman -S gcc,安装的就是 UCRT 版本的 GCC。

Shell 脚本和编程语言
由于 MSYS 提供了完整的 Bash shell,你可以在这里运行各种脚本和程序。
- Bash 脚本 (
.sh): 你可以编写.sh脚本,并使用bash script.sh或chmod +x script.sh && ./script.sh来执行。 - Python: Python 通常已经预装或可以通过
pacman轻松安装,你可以直接运行python your_script.py。 - Perl, Ruby, Node.js 等: 同样,这些语言都可以通过
pacman安装并在 MSYS 环境中使用。
实战示例:在 MSYS2 中编译一个 C 程序
假设你刚刚安装了 MSYS2,并想编译一个简单的 C 程序。
-
打开 UCRT64 终端 (这是推荐的现代环境)。
-
安装编译工具:
# 更新包数据库并升级所有包 pacman -Syu # 安装 GCC (C/C++ 编译器) 和 Make (构建工具) pacman -S gcc make
-
创建一个 C 源文件:
# 创建一个名为 hello.c 的文件 cat > hello.c << EOF #include <stdio.h> int main() { printf("Hello from MSYS2!\n"); return 0; } EOF -
编译程序:
# 使用 gcc 将 hello.c 编译成可执行文件 hello.exe gcc hello.c -o hello.exe
-
运行程序:
# 在 MSYS 终端中运行 ./hello.exe # 输出: Hello from MSYS2!
-
在 Windows 中运行: 你可以在 Windows 的文件管理器中进入 MSYS 的
/home/YourUsername目录(在 Windows 中对应C:\msys64\home\YourUsername),双击hello.exe也能成功运行。
| 命令类别 | 主要用途 | 常见命令 |
|---|---|---|
| 文件/目录操作 | 管理文件和文件夹,与 Linux/Unix 一致 | ls, cd, cp, mv, rm, mkdir |
| 文本处理 | 查看和搜索文件内容 | cat, less, grep, find |
| 环境管理 | 设置环境变量、创建别名 | export, alias, source |
| 路径转换 | 在 Windows 和 Unix 路径间转换 | cygpath, pwd -W |
| 软件包管理 | 安装、更新、删除开发工具和库 | pacman |
| 程序执行 | 运行脚本和编译好的程序 | ./your_program, python script.py |
掌握 MSYS 命令的关键在于理解它为你提供了一个 Linux/Unix 风格的命令行环境,让你能够高效地在 Windows 上进行开发工作,特别是编译和运行跨平台软件。
