Command(CMD)_powershell_WSL

78 阅读3分钟

command(CMD)_powershell_WSL

Command Prompt (CMD)

  1. 基于文本 (Text-based): CMD 主要处理和返回纯文本字符串。当一个命令执行后,其输出就是一串字符
  2. eg:果在 CMD 中运行 dir 命令来列出目录内容,得到的是一个格式化的文本块

PowerShell

  1. 基于对象 (Object-based): 这是 PowerShell 最核心和最强大的特性。PowerShell 在管道中传递的是 .NET 对象,而不仅仅是文本
  2. PowerShell 中运行 Get-ChildItem (功能上等同于 dir),返回的是一系列文件和文件夹的对象。可以轻松地访问每个对象的特定属性,如 Name, Length, CreationTime 等,无需进行文本解析

跨平台支持

  1. Command Prompt (CMD):
    1. 仅限于 Windows 平台
  2. PowerShell:
    1. 从 PowerShell Core (PowerShell 6 及更高版本) 开始,它成为了一个跨平台工具,可以在 Windows, macOS 和各种 Linux 发行版上运行。这使得它成为管理混合环境的理想选择

别名 Alias

PowerShell 提供了一个强大的别名系统,以帮助熟悉 CMD 或 Linux Shell 的用户平滑过渡

  1. 在 PowerShell 中输入 dirls,实际上是在调用 Get-ChildItem
  2. 输入 clsclear,实际上是调用 Clear-Host
  3. 输入 ps,实际上是调用 Get-Process

WSL (Windows Subsystem for Linux)

WSL 是一个在 Windows 10 和 Windows 11 上的功能,能够安装一个完整的 Linux 发行版(如 Ubuntu, Debian, Kali Linux 等),并直接运行原生的 Linux 命令行工具、实用程序和应用程序,而无需创建传统的虚拟机或双系统启动

WSL (Windows Subsystem for Linux)

  1. WSL 1:通过一个翻译层将 Linux 系统调用实时转换为 Windows 系统调用
  2. WSL 2:使用一个轻量级的虚拟机,在其中运行一个完整的、真正的 Linux 内核。这提供了更好的性能和 100% 的系统调用兼容性,是目前的主流和推荐版

特性Command Prompt (CMD)PowerShellWindows 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 系统功能
跨平台仅 WindowsWindows, macOS, Linux主要在 Windows 上模拟 Linux 环境
可扩展性非常高,可通过模块扩展高,可安装各类 Linux 软件包
远程管理有限 (如 psexec)内置强大的远程处理能力 (WinRM)可使用 SSH 等 Linux 远程工具

WSL安装

  1. 以管理员身份打开 PowerShell 或命令提示符 (Command Prompt)

  2. 在打开的管理员终端窗口中,输入以下命令并按 Enter:

    wsl --install
    
  3. 重启计算机