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

news2024/11/24 6:42:27

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

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

文章目录

  • 一、概念
    • 1.1 DOS (Disk Operating System)
    • 1.2 CMD (Command Prompt)
    • 1.3 PowerShell
    • 1.4 Shell
    • 1.5 Windows Terminal
      • 1.51 Linux终端
      • 1.52 MacOS终端
  • 二、常用命令(少部分)
    • 2.1 DOS (Disk Operating System)
    • 2.2 CMD (Command Prompt)
    • 2.3 PowerShell
    • 2.4 Shell (如 Bash)
    • 2.5 使用CMD还是Powershell
      • 2.51 总体对比
      • 2.52 脚本对比

一、概念

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是更好的选择。



~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/868582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity实战系列】Unity的下载安装以及汉化教程

君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,怎么说呢,其实这才是我以后真正想写想做的东西,虽然才刚开始,但好歹,我总算是启程了。今天要分享…

阿里云Linux服务器安装FTP站点全流程

阿里云百科分享使用阿里云服务器安装FTP全教程,vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。 目录 前提条件 步骤一:安装vsftpd 步骤二…

Js小数运算精度缺失的解决方法

项目场景: 提示:项目需求截图: 问题描述 众所周知Js做运算时0.10.2不等于0.3,目前项目需要计算关于金额的选项,涉及到金额保留后两位。保单欠款是根据用户输入的保单应收和保单欠款自动计算的。 原因分析: 产生浮点数…

《Kubernetes知识篇:常见面试题汇总》

正在不断地完善中,预计1个月的时间完成,覆盖整个Kubernetes知识面总结! 一、概述 1、简述什么是 Kubernetes? kubernetes(常简称k8s),是一个 为容器化应用提供自动化部署、扩展和管理的开源平台…

Scractch3.0_Arduino_ESP32_学习随记_蓝牙键盘(三)

C02蓝牙键盘 目的器材程序联系我们 目的 通过C02实现蓝牙键盘 器材 硬件: 齐护机器人C02 购买地址 软件: scratch3.0 下载地址:官网下载 程序 在P5口连接按钮模块。 蓝牙键盘组合按键动作的实现。 当对应按键按下时模拟键盘动作,先按下ctrl然后按下对应组合键…

Scractch3.0_Arduino_ESP32_学习随记_IO中断(六)

IO中断 目的器材程序联系我们 目的 ESP32 IO中断的使用。 中断: 当IO中断事件发生时,MCU将优先执行中断的程序。 打个比方: 你正在读一本书,突然手机收到一条紧急消息。你不想错过这个重要的消息,所以你立即停下手中的…

【总结】Javaweb和Java项目的比较

🎄欢迎来到边境矢梦的csdn博文🎄 🎄本文主要梳理Javaweb中的关键点和需要注意的地方🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一下&#x1f…

计算机网络核心-数据交换

1 概述 计算机网络的核心即数据交换。通过数据交换将数据从源主机发送到目的主机。 2 为什么需要数据交换 如果不是数据交换的方式,而是每两台主机直接连接,则会产生N^2链路问题。 即,假设有N台主机,两两间建立连接&#xff0c…

STM32F429IGT6使用CubeMX配置外部中断按键

1、硬件电路 2、设置RCC,选择高速外部时钟HSE,时钟设置为180MHz 3、配置GPIO引脚 4、NVIC配置 PC13相同 5、生成工程配置 6、部分代码 中断回调函数 /* USER CODE BEGIN 0 */void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {if(GPIO_Pin GPIO_PIN_0){HAL_GPIO…

自动测试框架airtest应用二:咪咕爱看能量兑换

一、背景介绍 咪咕爱看是中国移动旗下的一款视频播放软件,可以观看众多电影、电视剧、综艺视频,并且移动环境下观看视频还能获得能量,能量可以兑换流量和消费券。它曾经是一款良心APP,不过经过多年调整,现在大部分电影…

android,Compose,消息列表和动画(点击item的时候,就会删除)

Compose,消息列表和动画(点击item的时候,就会删除) package com.example.mycompose08import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundat…

基于机器学习进行降雨预测 -- 机器学习项目基础篇(13)

在本文中,我们将学习如何构建一个机器学习模型,该模型可以根据一些大气因素预测今天是否会有降雨。这个问题与使用机器学习的降雨预测有关,因为机器学习模型往往在以前已知的任务上表现得更好,而这些任务需要高技能的个人来完成。…

面试八股文Mysql:(2)数据库调优

1. SQL优化很有必要 数据库优化在提升系统性能是很重要的一个方面,不管是MySQL还是MongoDB还是其它的数据库。 SQL优化在提升系统性能中是成本最低 && 优化效果最明显的途径,可以让吞吐量更大,响应速度更快。如果你的团队在SQL优化这…

阿里云服务器部署RabbitMQ流程

阿里云百科分享使用阿里云服务器部署RabbitMQ流程,RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件,用于在分布式系统中存储转发消息,有良好的易用性、扩展性和高可用性。本文介绍如何通过ECS实例部署Rabbi…

九、多态(1)

本章概要 向上转型回顾 忘掉对象类型 转机 方法调用绑定产生正确的行为可扩展性陷阱:“重写”私有方法陷阱:属性与静态方法 多态是面向对象编程语言中,继数据抽象和继承之外的第三个重要特性。 多态提供了另一个维度的接口与实现分离&…

Qt5开发视频播放器

一、播放器界面UI设计 控件对象名位置(坐标点)对象名称组件名称备注Widget(0, 0, 809, 572)WidgetQWidgetlabellabelQLabel播放窗口label_2label_2QLabelvoice_controlvoice_controlQSlider音量滑动条btn_openbtn_openQPushButton打开文件按钮label_4la…

在阿里云服务器上安装Microsoft SharePoint 2016流程

本教程阿里云百科分享如何在阿里云ECS上搭建Microsoft SharePoint 2016。Microsoft SharePoint是Microsoft SharePoint Portal Server的简称。SharePoint Portal Server是一个门户站点,使得企业能够开发出智能的门户站点。 目录 背景信息 步骤一:添加…

Spring循环依赖-实践三级缓存的再次理解

目录 Spring循环依赖流程图场景:**A 依赖B**; **B依赖A、C**; **C依赖A**A,B, C三个类的定义容器类测试输入如下 总结 Spring循环依赖流程图 很早之前阅读源码写过总结: https://github.com/doctording/spring-framework-5.1.3.RELEASE/blob…

8/12 题解

解题思路 贪心&#xff0c;小的搭配大的&#xff0c;和会最小 AC代码 #include <iostream> using namespace std;int main() {int n;cin >> n;int l 1;int r n;while(l < r){ cout << l << ;l;cout << r << ;--r;if(l r){cout …

java 9的新特性解读(3)

目录 语法改进&#xff1a;try语句 String存储结构变更 Motivation Description 那StringBuffer 和 StringBuilder 是否仍无动于衷呢&#xff1f; 集合工厂方法&#xff1a;快速创建只读集合 语法改进&#xff1a;try语句 Java 8 中&#xff0c;可以实现资源的自动…