shell、cmd、dos和脚本语言区别和联系

问题一:DOS与windows中cmd区别
在windows系统中,“开始-运行-cmd”可以打开“cmd.exe”,进行命令行操作。
操作系统可以分成核心(kernel)和Shell(外壳)两部分,其中,Shell是操作系统与外部的主要接口,位于操作系统的外层,为用户提供与操作系统核心沟通的途径。在windows系统中见到的桌面即explorer.exe(资源管理器)是图形shell,而cmd就是命令行shell。这算是cmd与dos的最大区别,一个只是接口、一个是操作系统。只是cmd中的某些命令和dos中的命令相似,因此很多人把二者混为一谈。cmd属于windows系统的一部分,dos本身就是一个系统,在dos系统下可以删除,修复windows系统,而在cmd下则不行。

问题二:Linux下的shell是什么?
Shell俗称壳(用来区别于核 kernel),是一种“命令解析器”。按照ABS的定义,shell是The shell is a command interpreter. More than just the insulating layer between the operating system kernel and the user, it’s also a fairly powerful programming language。分为图形界面shell和命令行shell两大类。
Shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。不同系统有不同的shell,如bash、C shell、windows power shell 等等;在linux系统中,通常是Bourne Again shell ( 即bash)。

问题三:windows下能用bash shell吗?
bash是Linux和Unix下的shell,如果真的想试用,可以在MS windows下安装Cygwin环境,然后再在其下使用。 这时需要注意,Cygwin环境下跟真实的Linux或Unix是有区别的,一些命令会运行不正常。最直接的体验,还是使用Linux来得贴心,几乎可以做任何事情。如果想在MS Windows下使用Shell,建议还是使用微软的PowerShell,它能提供给你操作MS windows的完全功能。

问题四:脚本语言和普通的编程语言有什么区别?
编程语言 “编写-编译-链接-运行”,脚本语言是“解释-执行”而非编译,脚本语言的程序代码即使最终的可执行文件,通过对应的解释器解释执行即可,所以更方便快捷。每种脚本语言都需要其对应的解释器。如Perl、Python、Ruby、JavaScript等都是脚本语言,shell也属于一种比较特殊的脚本语言。

这个问题可参考知乎回答python需要编译,为什么还把他叫做脚本语言?

问题五:linux shell即bash和windows cmd区别?
shell是一个命令解释器(也是一种应用程序),处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户,同时,shell也可以作为一门强大的编程语言。在linux/unix平台上,shell多半默认为Bash shell。

cmd是Command shell的简写,微软的定义是:The command shell is a separate software program that provides direct communication between the user and the operating system. The non-graphical command shell user interface provides the environment in which you run character-based applications and utilities. The command shell executes programs and displays their output on the screen by using individual characters similar to the MS-DOS command interpreter Command.com.(CommandShell是一个独立的应用程序,它为用户提供对操作系统直接通信的功能,它为基于字符的应用程序和工具提供了非图形界面的运行环境,它执行命令并在屏幕上回显MS-DOS风格的字符。)所以,可以近似地认为linux shell=bash而windows=cmd,都是命令行解释器,都是用户与操作系统的交互接口。但是bash要比cmd强大很多,windows也有强大的shell叫windows power shell。

原文作者:闻道又又鱼
原文链接:https://www.cnblogs.com/steamedfish/p/7123749.html

  1. Shell是什么?

答:shell本意是指壳,在计算机术语中,shell是指用户操作接口的意思。操作系统运行起来后都会给用户提供一个操作接口,这个操作接口就叫shell。
用户可以通过shell来调用操作系统内部的复杂实现。

Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。
Shell 本身并不是内核的一部分,它只是在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。
然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux。

  1. Shell的分类?

答:常用的Shell功能有两种形式外在形式:GUI和cmdline
(1)GUI(图形用户界面),特点是操作简单、易学易用,适合使用电脑来工作的人。
(2)cmdline(命令行界面),譬如linux的终端和windows的cmd,特点是不易用易学,优点是可以进行方便的shell编程,适合做开发的人。
用户界面和命令行就是这个另外开发的程序,就是“代理”作用。在Linux下,这个特定程序叫做 Shell。

  1. 为什么需要Shell?

答:1. 因为计算机程序本身很复杂,操作系统内部功能的实现和外面接口的调用必须分开。操作接口本身就是对内部复杂功能实现的一种封装,外部只需要通过操作接口就可以很容易去调用操作系统内部功能,但是却不用理会内部功能实现的复杂性和原理。 2. 由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序; 该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,这样用户就能间接地使用操作系统内核了。

  1. Shell 是如何连接用户和内核的?

答:Shell 能够接收用户输入的命令,并对命令进行处理,处理完毕后再将结果反馈给用户,比如输出到显示器、写入到文件等,
这就是大部分读者对 Shell 的认知。你看,我一直都在使用 Shell,哪有使用内核哦?我也没有看到 Shell 将我和内核连接起来呀?!

其实,Shell 程序本身的功能是很弱的,比如文件操作、输入输出、进程管理等都得依赖内核。我们运行一个命令,大部分情况下 Shell 都会去调用内核暴露出来的接口,这就是在使用内核,只是这个过程被 Shell 隐藏了起来,它自己在背后默默进行,我们看不到而已。接口其实就是一个一个的函数,使用内核就是调用这些函数。这就是使用内核的全部内容了吗?嗯,是的!除了函数,你没有别的途径使用内核。比如,我们都知道在 Shell 中输入cat log.txt命令就可以查看 log.txt 文件中的内容,然而,log.txt 放在磁盘的哪个位置?分成了几个数据块?在哪里开始?在哪里终止?如何操作探头读取它?这些底层细节 Shell 统统不知道的,它只能去调用内核提供的 open() 和 read() 函数,告诉内核我要读取 log.txt 文件,请帮助我,然后内核就乖乖地按照 Shell 的吩咐去读取文件了,并将读取到的文件内容交给 Shell,最后再由 Shell 呈现给用户(其实呈现到显示器上还得依赖内核)。整个过程中 Shell 就是一个“中间商”,它在用户和内核之间“倒卖”数据,只是用户不知道罢了。

Linux shell——>bash
Windows shell——>cmd和power shell
那么Windows的power shell和cmd的区别是?
powershell简单来说就是功能更强大的cmd。

一、PowerShell是啥?它是专为系统管理员设计的新Windows命令行shell,它包括交互式提示和脚本环境。PowerShell定义很多命令与操作系统,特别是与文件系统交互,能够启动应用程序,甚至操纵应用程序;PowerShell允许将几个命令组合起来放到文件里执行,实现文件级的重用,也就是说有脚本的性质。

二、命令设计有区别,传统CMD命令是固定的,新入门用户必须强记所有命令才能玩转;PowerShell命令设计非常规范,它的命令由“动词”和“名词”两部分组成,比如“get”表示检索数据,“process”表示系统进程,把“get”和“process”组合起来的PowerShell命令就是“get-process”,意思是获取系统进程列表,这种命令在PowerShell中称为“cmdlet“。

三、处理系统服务,PowerShell的基本目标是使用户能够以交互方式或通过脚本更好、更容易地对系统进行管理控制,为了达成这个目标,PowerShell提供了大量命令来执行各种管理任务,让用户轻松完成管理系统任务。如用Get-Service命令获取服务列表。

四、PowerShell还有许多功能,如别名系统、无管理员权限访问HKLM驱动器、处理证书、处理防火墙等任务,大家可以使用get-command命令查找相关命令。

五、PowerShell兼容所有传统CMD命令。

分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割分割

PowerShell是跨平台的,cmd是Windows专用的。

PowerShell有面向对象的管道。

PowerShell能够调用.NET的很多功能。

在windows上cmd和powershell都是命令行执行窗口,Powershell 从 Windows7 时代开始内置于 Windows 系统当中,可以看作是微软对 cmd 的大升级,目前两者并存于 Windows 系统中。
1、powershell功能更加强大可以说分分钟钟秒杀linux的bash,更别说饱受诟病的 cmd;
2、powershell 背后依靠的是一套完整的 .NET 编程体系,其脚本更容易编写且稳健性大大提升。反过来看 cmd,那些完全由各种命令堆砌而成的一条条指令简直就是“小打小闹”;
3、因为 powershell 可以看作 cmd 的超集,所有的常用命令诸如dir, cd, ipconfig等在 powershell 中都能直接使用。但背后的实现方式是完全不同的,powershell 基于完全的面向对象,它通过给函数和对象“起别名”的方式来支持这些旧的命令;
4、powershell支持复杂的管道操作:管道操作的灵感来自 Linux 的 shell,但由于 powershell 将一切都包装成为对象,而不是直接处理字符串,因此其管道操作的灵活程度远在 Linux 的 shell 之上;
5、任何函数与对象都能够通过help *命令来查看其帮助文档(准确来说应该是Get-Help函数,这是更加“面向对象”化的命名方式,而help是它的别名),如果看不明白,加上-examples参数会有应用实例,如果仍看不明白,加上-online参数会打开完整的在线帮助文档;
6、powershell 原生支持将结果导出到html, csv, xml等文件,也可以通过重定向从文件中读取内容。
7、powershell 脚本的语法与高级编程语言非常相近,例如其分支语句if(…){} else{}、循环语句for(…){}与 C 语言别无二致,因而大大提高了编程体验。
8、powershell支持 Debug:虽然这个功能很少用到,但支持 debug 是走向完备编程语言不可或缺的一项功能。

附录:
如何快速打开cmd或powershell?
1.win+R打开“运行”,然后输入cmd或powershell,回车进入;
2.可在打开的文件夹内,直接在地址栏输入cmd或powershell,回车进入;
3.在Windows的搜索应用中输入cmd或powershell,回车进入。

————————————————
版权声明:本文为CSDN博主「CA-CA」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34474071/article/details/122679462

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值