DOS 和 CMD 以及 Shell 之间的关系

500 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1. DOS

DOS,全称磁盘操作系统(disk operation system),是微软系列操作系统之一,是一个独立的操作系统,对操作人员要求较高,操作者需要记住很多的命令,并利用命令编写大量的命令行代码来完成一些工作,操作比较复杂,所以后来出现的 Windows 取代了 DOS。

2. CMD

CMD,命令(command)的简称,是 Windows 系统中的命令行窗口。虽然 Windows 取代了 DOS,但是 Windows 系统内部保留了可以执行 DOS 命令的 CMD 命令行窗口,CMD 只是一个 Windows 下模拟 DOS 环境的程序,脚本是批处理,语法不完整,逻辑有缺陷,对 Windows 来说,大部分情况下不会用到 CMD。

CMD 可以执行很多 DOS 命令,但是不能运行 DOS 程序。只能调用 Win32 或 Win64 的程序。

3. Shell

Shell 本身是一种用 C 语言编写的程序,从用户的角度来看,Shell 是用户与 Linux 操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell 脚本编程,完成更加复杂的操作。Shell 是 Linux 必有的,类似于 DOS 下的 command 和后来的 cmd.exe。Shell 的脚本十分完整,逻辑也严谨。

Shell 和 DOS 的命令差别:

  • Shell 区分大小写,DOS 不区分大小写
  • 一般而言,Shell 命令的开关可以简写(比如说"-a -l"可以简写为"-al"),而 DOS 则不允许。
  • 在脚本编写上的语法差别极大,比如说,两者的流程控制语句语法不同,变量的语法不同等。
  • Shell 可以在 UNIX、GNU/Linux 和 Windows 下(cygwin bash shell)工作,而 DOS 只能在 Windows/DOS 系统中工作。
  • Shell 原生支持正则表达式,DOS 则不是。