DOS、CMD、PowerShell、Shell 与 Windows (类Unix)Terminal 的区别

2023-08-12 18:32:08

在计算机历史的演进中,命令行界面CLI)始终是一个核心组件,它为用户提供了与计算机系统直接交互的能力。从早期的文本界面到现代的终端,命令行工具已经经历了长足的发展。

本文将深入探讨DOS、CMD、PowerShell、Shell和Windows Terminal这五种工具(系统)的特点、历史和应用。

一、概念

1.1 DOS (Disk Operating System)

  • 定义:DOS是20世纪80年代初的主流操作系统,主要用于IBM PC兼容的个人计算机。

  • 历史与发展

    • DOS最初是为IBM的第一台个人计算机而开发的。
    • MS-DOS是其中最流行的版本,由微软开发。
    • 随着Windows的出现,DOS的重要性逐渐减弱,但它为后续的命令行工具奠定了基础
  • 主要应用

    • 文件管理。
    • 系统配置。
    • 运行早期的应用程序。

1.2 CMD (Command Prompt)

  • 定义:CMD是Windows操作系统的命令行解释器,它继承了MS-DOS的许多特性。

  • 历史与发展

    • CMD首次出现在Windows NT中,作为MS-DOS的替代品。
    • 它提供了与Windows系统的更好集成,同时保留了MS-DOS的核心功能。
  • 主要应用

    • 文件和目录操作。
    • 网络诊断。
    • 系统管理。

1.3 PowerShell

  • 定义:PowerShell是一个跨平台的任务自动化和配置管理框架,由微软开发。

  • 历史与发展

    • PowerShell最初是为Windows Vista而开发的,目的是提供一个比CMD更强大的脚本环境
    • 它现在已经成为Windows Server和Azure云服务的核心组件。
  • 主要应用

    • 系统自动化。
    • 配置管理。
    • 数据处理和分析。

1.4 Shell

  • 定义:Shell是LinuxUnix系统的命令行解释器

  • 历史与发展

    • Unix Shell最初是为Unix操作系统而开发的,后来被许多其他系统采用。
    • Bash是最流行的Shell,但还有其他选择,如Zsh、Fish和Tcsh。
  • 主要应用

    • 文件和进程管理。
    • 脚本编程。
    • 系统监控。

1.5 Windows Terminal

  • 定义:Windows Terminal是微软的新终端应用程序,它提供了一个集成的环境,支持CMD、PowerShell和WSL

  • 历史与发展

    • Windows Terminal是微软对现代终端的回应,它在2019年首次发布。
    • 它的目标是提供一个统一、高效和高度可定制的终端体验。
  • 主要应用

    • 多标签界面。
    • 丰富的视觉效果和主题。
    • 高度的用户定制性。

实际上,有一大部分用户是很少使用Windows终端的,而是像它推出之前一样直接使用cmd或者powershell。但Windows终端的体验确实不错,比如可以显示更多的行数,在powershell中即使把缓冲区拉倒最大,有些命令的输出也不能显示全,需要分页或者输出重定向,而在Windows终端中则可以显示上千行(虽然不实用)。
在这里插入图片描述


与Windows终端不同,类Unix系统的终端,功能更加强大,除了能访问shell(命令解释器),还提供了许多其他功能,比如应用程序的执行(vim)、远程访问、脚本执行等等。它本身更是一个命令解释器(虽然并不是)。

1.51 Linux终端

Linux的终端,通常被称为“终端模拟器”或简称“终端”,是一个软件程序,它为用户提供了一个文本界面,以与Linux系统进行交互。它模拟了早期计算机的物理终端,这些计算机使用文本界面而不是图形界面。

以下是Linux终端的一些关键特点和功能:

  1. 命令行界面:终端提供了一个命令行界面,用户可以输入命令来执行各种任务,如文件管理、系统监控和软件安装。

  2. Shell访问:通过终端,用户可以访问系统的shell(如Bash、Zsh或Fish)。Shell是一个命令行解释器,它读取并执行用户输入的命令。

  3. 脚本执行:用户可以在终端中执行shell脚本,这些脚本可以自动化许多任务。

  4. 文本界面应用程序:某些Linux应用程序,如文本编辑器vimnano,以及文件管理器mc,是基于文本的,并在终端中运行。

  5. 远程访问:通过工具如ssh(安全壳),用户可以从一个终端远程访问另一个Linux系统的终端。

  6. 多样性:Linux有多种终端模拟器可供选择,如gnome-terminalkonsolextermterminator等,每个都有其独特的特点和功能。

  7. 高度可定制:大多数终端模拟器都允许用户定制其外观和行为,例如更改字体、颜色、背景和快捷键。

1.52 MacOS终端

macOS的终端与Linux的终端在许多方面都相似,因为macOS基于Unix。以下是macOS终端的一些关键特点和功能:

  1. 命令行界面:macOS的终端提供了一个命令行界面,允许用户输入命令来执行各种任务,如文件管理、网络诊断和系统配置。

  2. Bash Shell:直到macOS Catalina之前,macOS的默认shell都是Bash。从macOS Catalina开始,系统默认的shell变为了Zsh,但用户仍然可以选择使用Bash或其他shell。

  3. 脚本执行:与Linux终端一样,macOS终端允许用户执行shell脚本来自动化任务。

  4. 内置工具:macOS终端提供了许多Unix工具,如grepawksedssh等。

  5. Homebrew:macOS用户经常使用Homebrew作为包管理器来安装额外的命令行工具和应用程序。

  6. 远程访问:macOS终端内置了ssh工具,允许用户远程访问其他系统。

  7. 高度可定制:macOS终端支持多个标签和窗口,用户可以自定义字体、颜色和其他外观设置。

  8. 其他终端应用:除了默认的Terminal.app,macOS还有其他第三方终端应用,如iTerm2,它提供了更多的功能和定制选项。

  9. 集成开发环境(IDE)集成:许多现代IDE,如Visual Studio Code或PyCharm,都提供了集成的终端,允许开发者在同一个界面中编写代码和执行命令。

二、常用命令(少部分)

2.1 DOS (Disk Operating System)

DOS是一个基于文本的操作系统,其命令主要用于文件和目录管理。以下是一些常用的DOS命令:

  • DIR:列出目录中的文件和子目录。
  • COPY:复制文件。
  • DEL:删除文件。
  • REN:重命名文件。
  • CD:更改当前目录。
  • MKDIR (或 MD):创建新目录。
  • RMDIR (或 RD):删除目录。
  • TYPE:显示文件内容。

2.2 CMD (Command Prompt)

CMD是Windows的命令行解释器,它继承了DOS的一部分命令并添加了一些新功能。以下是一些常用的CMD命令:

  • CLS:清除屏幕。
  • ECHO:显示消息或开启/关闭回显。
  • FC:比较两个文件并显示差异。
  • FIND:在文件中查找字符串。
  • IPCONFIG:显示网络配置信息。
  • NET:用于管理网络资源。
  • SYSTEMINFO:显示计算机的系统信息。
  • TASKLIST:显示当前运行的进程。

2.3 PowerShell

PowerShell是一个强大的脚本环境,它提供了大量的命令(称为cmdlet)来执行各种任务。以下是一些常用的PowerShell命令(命令基本上都是谓宾结构):

  • Get-Command:列出所有可用的cmdlet和函数。
  • Get-Help:显示cmdlet的帮助信息。
  • Get-Process:列出所有运行的进程。
  • Get-Service:列出所有服务及其状态。
  • Set-ExecutionPolicy:设置脚本执行策略。
  • ConvertTo-Json:将对象转换为JSON格式。
  • Invoke-WebRequest:发送Web请求。
  • Export-Csv:将对象导出为CSV文件。

很多cmd的命令在powershell中也是可用的,但是有差异:

  1. 命令兼容性:PowerShell 可以执行大多数 CMD 命令,因为它允许运行外部程序。所以,你可以在 PowerShell 中运行像 diripconfignetstat 等传统的 CMD 命令。

  2. 别名:PowerShell 为了与 CMD 保持一定的兼容性,为许多常用的 CMD 命令提供了别名。例如,当你在 PowerShell 中输入 dir,它实际上是调用 Get-ChildItem cmdlet。这意味着你可以在 PowerShell 中使用熟悉的 CMD 命令,但实际上背后执行的是 PowerShell 的 cmdlet。

  3. 命令结构:尽管 PowerShell 支持许多 CMD 命令,但它们的工作方式可能会有所不同。PowerShell 使用 cmdlet 的结构,这些 cmdlet 通常遵循 Verb-Noun 的命名约定,如 Get-ContentSet-Item 等。

  4. 参数差异:即使某些 CMD 命令在 PowerShell 中有效,它们的参数和工作方式也可能与在 CMD 中有所不同。例如,某些命令可能需要使用 PowerShell 的参数前缀 - 而不是 CMD 的 /

  5. 扩展功能:PowerShell 提供了许多功能,这些功能在 CMD 中是不存在的,如对象管道、远程管理和丰富的脚本功能。

  6. 安全性:PowerShell 有一个执行策略系统,它可能会阻止某些脚本的执行,除非用户明确允许。这是为了增加安全性,防止恶意脚本的执行。

尽管 PowerShell 支持许多传统的 CMD 命令,但它们可能会以不同的方式工作,或者有不同的参数和功能。为了充分利用 PowerShell,建议用户学习和使用其原生的 cmdlet 和功能,而不是仅仅依赖于旧的 CMD 命令。

2.4 Shell (如 Bash)

Bash是Linux和Unix系统中最常用的shell。以下是一些常用的Bash命令:

  • ls:列出目录内容。
  • cd:更改当前目录。
  • pwd:显示当前工作目录。
  • echo:输出文本或变量。
  • grep:在文件中搜索特定的文本。
  • chmod:更改文件或目录的权限。
  • chown:更改文件或目录的所有者。
  • ps:显示当前运行的进程。
  • kill:结束进程。

2.5 使用CMD还是Powershell

2.51 总体对比

CMD(命令提示符)和PowerShell都是Windows操作系统中的命令行界面,但它们在设计、功能和目的上有所不同。以下是对两者的比较:

CMD(命令提示符):

  1. 历史:CMD是Windows的传统命令行工具,它继承了MS-DOS的命令集。
  2. 功能:相对基础,主要提供文件和目录管理功能。
  3. 脚本:使用批处理(.bat)文件进行脚本编写。
  4. 兼容性:由于其历史悠久,一些旧的应用程序和脚本可能仍依赖于CMD。
  5. 界面:文本基础,没有内置的高级文本处理或对象操作功能。

PowerShell

  1. 历史:PowerShell是Windows的现代命令行和脚本环境,首次发布于2006年。
  2. 功能:非常强大,提供了许多高级功能,如远程管理、事件日志访问和注册表操作。
  3. 脚本:使用.ps1脚本文件,并支持更复杂的编程结构和操作。
  4. 对象导向:PowerShell是基于对象的,这意味着命令的输出可以被当作对象处理,而不仅仅是文本。这使得数据处理和操作更加灵活和强大。
  5. 扩展性:PowerShell支持模块和扩展,允许用户添加更多的命令和功能。
  6. 跨平台:PowerShell Core是PowerShell的开源版本,可以在Windows、Linux和macOS上运行。

建议:

  • 对于基本的文件和目录管理任务,CMD和PowerShell都可以胜任,但PowerShell提供了更多的高级功能。
  • 如果你需要进行复杂的脚本编写、数据处理或系统管理任务,PowerShell无疑是更好的选择。
  • 对于习惯使用传统DOS命令的用户,CMD可能更为熟悉。
  • 对于希望学习现代命令行技能并利用Windows系统的全部功能的用户,PowerShell是推荐的工具。

选择CMD还是PowerShell取决于你的具体需求、经验和任务的复杂性。然而,随着时间的推移,微软明显更倾向于推广和支持PowerShell作为其主要的命令行工具。

2.52 脚本对比

CMDPowerShell 的脚本在语法、功能和设计哲学上有很大的区别。以下是两者脚本的主要差异:

  1. 脚本文件扩展名:

    • CMD:使用 .bat.cmd 作为批处理脚本的扩展名。
    • PowerShell:使用 .ps1 作为PowerShell脚本的扩展名。
  2. 语法:

    • CMD:批处理脚本的语法相对简单,主要基于早期的DOS命令。例如,使用 echo 打印文本,使用 if 进行条件判断,使用 for 进行循环等。

    • PowerShell:PowerShell的语法更加丰富和强大。它支持更复杂的编程结构,如函数、数组、哈希表、对象处理等。PowerShell的命令通常遵循 Verb-Noun 的命名约定,如 Get-ChildItemSet-Variable 等。

  3. 功能:

    • CMD:批处理脚本的功能相对有限,主要用于文件和目录管理、简单的文本处理和系统任务。

    • PowerShell:PowerShell提供了许多高级功能,如远程管理、事件日志访问、注册表操作、WMI查询、Active Directory管理等。

  4. 数据处理:

    • CMD:批处理脚本主要处理文本数据。文本处理功能有限,通常需要使用外部工具(如 findstr)进行文本搜索和替换。

    • PowerShell:PowerShell是基于对象的,这意味着命令的输出可以被当作对象处理,而不仅仅是文本。这使得数据处理和操作更加灵活和强大。

  5. 错误处理:

    • CMD:批处理脚本的错误处理相对简单,通常使用 errorlevel 变量来检查上一个命令的退出状态。

    • PowerShell:PowerShell提供了更先进的错误处理机制,如 try-catch-finally 结构,以及对错误对象的详细访问。

  6. 安全性:

    • CMD:批处理脚本没有内置的安全机制。

    • PowerShell:PowerShell具有执行策略系统,可以防止未经授权的脚本执行。此外,PowerShell脚本可以被数字签名,以确保其完整性和来源。

PowerShell脚本提供了比批处理脚本更强大和灵活的功能。尽管批处理脚本在某些简单任务中仍然有用,但对于复杂的系统管理和自动化任务,PowerShell是更好的选择。



~

更多推荐

Maven的介绍和使用

Maven的作用项目构建依赖管理:避免资源间版本冲突问题统一开发结构:提供统一的项目结构Maven的使用下载完压缩包之后放在合适的目录下,其中apache-maven-3.8.8文件夹是安装的maven,下面的repository是本地仓库,其中要修改setting.xml下的仓库路径,设置阿里云镜像。将这里的路径改为

【C++】AVL树

AVL树1.AVL树的概念2.AVL树的实现2.1节点的定义2.2插入2.3是否是AVL树3.AVL树与红黑树1.AVL树的概念AVL树是一棵二叉搜索树,但它的每个节点的左右子树的高度差的绝对值不超过1,且它的子树也是平衡二叉树。左右子树的高度差也叫平衡因子,平衡因子=右子树叶的高度-左子树的高度。将AVL树与满二叉树

代理IP与Socks5代理:跨界电商智能爬虫的引擎与安全壁垒

摘要:随着跨界电商的蓬勃发展,数据采集和隐私保护成为企业的关键挑战。本文将深入探讨代理IP和Socks5代理在跨界电商中的应用,以及它们在智能爬虫技术中的关键作用,为企业提供数据引擎和安全防护的解决方案。第一部分:背景介绍跨界电商已成为全球贸易的重要组成部分,为企业提供了巨大的市场机会。然而,要在这个竞争激烈的领域中脱

单片机论文参考:4、基于单片机的智能避障小车

第一章引言随着汽车工业的快速发展,关于汽车的研究也越来越受到人们的关注。智能汽车概念的提出给汽车产业带来机遇也带了挑战。汽车的智能化必将是未来汽车产业发展的趋势,在这样的背景下,我们开展了基于超声波和红外线的智能小车的避障研究。超声波作为智能车避障的一种重要手段,以其避障实现方便,计算简单,易于做到实时控制,测量精度也

12:STM32---RTC实时时钟

目录一:时间相关1:Unix时间戳2:UTC/GMT3:时间戳转化二:BKP1:简历2:基本结构三:RTC1:简历2:框图3:RTC基本结构4:RTC操作注意四:案例A:读写备份寄存器1:连接图2:步骤3:代码B:实时时钟1:连接图2:函数介绍3:代码一:时间相关1:Unix时间戳Unix时间戳(UnixTimesta

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(五)

目录前言总体设计系统整体结构图系统流程图运行环境模块实现1.模型训练1)数据集分析2)数据预处理3)模型创建4)模型训练5)获取特征矩阵2.后端Django1)路由文件2)视图层文件3)项目设置文件相关其它博客工程源代码下载其它资料下载前言本项目专注于MovieLens数据集,并采用TensorFlow中的2D文本卷积

【业务功能篇112】Springboot + Spring Security 权限管理-登录模块开发实战

合家云社区物业管理平台4.权限管理模块研发4.3登录模块开发前台和后台的认证授权统一都使用SpringSecurity安全框架来实现。首次登录过程如下图:4.3.1生成图片校验码4.3.1.1导入工具类(1)导入Constants常量类/***通用常量类*@authorspikeCong*@date2023/5/3**

apache poi 实现Excel 下拉联动

原文链接:Javapoi实现Excel下拉联动Java实现Excel下拉联动,本示例中实现了省市区乡镇村联动。适用于03版本Excel。依赖<!--https://mvnrepository.com/artifact/org.apache.poi/poi--><dependency><groupId>org.apach

一次ES检索的性能优化经验记录

优化功能:统一检索能力,为各服务所调用。该接口并发压力大,压测效果不理想。初步2k线程两台压测机预发环境压测结果两pod下为400qps左右,单pod平均qps200,响应时间在五分钟之后达到了峰值,平响达到几十秒开外。压测环境:内网环境,过网关压测,压测链路:网关→后台服务。一、优化初期出现这样的情况,是意想之外的,

STP生成树协议基本配置示例---STP逻辑树产生和修改

STP是用来避免数据链路层出现逻辑环路的协议,运行STP协议的设备通过交互信息发现环路,并通过阻塞特定端口,最终将网络结构修剪成无环路的树形结构。在网络出现故障的时候,STP能快速发现链路故障,并尽快找出另外一条路径进行数据传输。交换机上运行的STP通过BPDU信息的交互,选举根交换机,然后每台非根交换机选择用来与根交

新的 .NET Upgrade Assistant 版本包含功能更新和 .NET MAUI 改进!

作者:OliaGavrysh排版:AlanWang我们非常高兴的宣布,我们已经在VisualStudio中发布了新版本的.NETUpgradeAssistant,它在新版本中增加了在不更改目标框架的情况下更新项目功能的能力,并且对.NETMAUI的迁移功能有很多改进!.NETUpgradeAssistant是一种可帮助

热文推荐