command(CMD)_powershell_WSL
Command Prompt (CMD)
- 基于文本 (Text-based): CMD 主要处理和返回纯文本字符串。当一个命令执行后,其输出就是一串字符
- eg:果在 CMD 中运行
dir命令来列出目录内容,得到的是一个格式化的文本块
PowerShell
- 基于对象 (Object-based): 这是 PowerShell 最核心和最强大的特性。PowerShell 在管道中传递的是
.NET对象,而不仅仅是文本 - PowerShell 中运行
Get-ChildItem(功能上等同于dir),返回的是一系列文件和文件夹的对象。可以轻松地访问每个对象的特定属性,如Name,Length,CreationTime等,无需进行文本解析
跨平台支持
- Command Prompt (CMD):
- 仅限于 Windows 平台
- PowerShell:
- 从 PowerShell Core (PowerShell 6 及更高版本) 开始,它成为了一个跨平台工具,可以在 Windows, macOS 和各种 Linux 发行版上运行。这使得它成为管理混合环境的理想选择
别名 Alias
PowerShell 提供了一个强大的别名系统,以帮助熟悉 CMD 或 Linux Shell 的用户平滑过渡
- 在 PowerShell 中输入
dir或ls,实际上是在调用Get-ChildItem - 输入
cls或clear,实际上是调用Clear-Host - 输入
ps,实际上是调用Get-Process
WSL (Windows Subsystem for Linux)
WSL 是一个在 Windows 10 和 Windows 11 上的功能,能够安装一个完整的 Linux 发行版(如 Ubuntu, Debian, Kali Linux 等),并直接运行原生的 Linux 命令行工具、实用程序和应用程序,而无需创建传统的虚拟机或双系统启动
WSL (Windows Subsystem for Linux)
- WSL 1:通过一个翻译层将 Linux 系统调用实时转换为 Windows 系统调用
- WSL 2:使用一个轻量级的虚拟机,在其中运行一个完整的、真正的 Linux 内核。这提供了更好的性能和 100% 的系统调用兼容性,是目前的主流和推荐版
| 特性 | Command Prompt (CMD) | PowerShell | Windows Subsystem for Linux (WSL) |
|---|---|---|---|
| 核心设计 | 基于文本 (Text-based) | 基于对象 (Object-based, .NET) | 基于 Linux 内核环境模拟 |
| 主要用途 | 简单的文件和网络操作 | 复杂的系统管理和自动化 | 运行 Linux 应用程序、开发环境搭建 |
| 命令 | 有限的内部命令 (dir, copy) | 丰富的 Cmdlets (Get-ChildItem) | Linux 命令集(如 ls、apt ) |
| 命名规范 | 不统一 | 动词 - 名词 (Verb-Noun) | 遵循 Linux 命令命名习惯 |
| 脚本语言 | 批处理 (.bat) | PowerShell 脚本 (.ps1) | Shell 脚本(bash、sh 等) |
| 脚本能力 | 功能有限,语法陈旧 | 功能强大,现代化的编程特性 | 功能丰富,可调用 Linux 系统功能 |
| 跨平台 | 仅 Windows | Windows, macOS, Linux | 主要在 Windows 上模拟 Linux 环境 |
| 可扩展性 | 低 | 非常高,可通过模块扩展 | 高,可安装各类 Linux 软件包 |
| 远程管理 | 有限 (如 psexec) | 内置强大的远程处理能力 (WinRM) | 可使用 SSH 等 Linux 远程工具 |
WSL安装
-
以管理员身份打开 PowerShell 或命令提示符 (Command Prompt)
-
在打开的管理员终端窗口中,输入以下命令并按 Enter:
wsl --install -
重启计算机