首页 > shell 与windows下的cmd区别

shell 与windows下的cmd区别

shell 与windows下的cmd区别


本来不是很想回答这个问题,但是看到评论里面那瓶矿泉水也来凑闹热,我就忍不住了。。。这厮曾经把我的答案评论的惨不忍睹。

首先说shell,shell直接翻译就是,按照ABS的定义,shellThe 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命令行解释器的意思.也有内核上的一层壳的含义。

然后我们看下CMD

CMDCommand shell的简写,翻译成中文也是命令外壳我擦真的好渣的翻译。我们看下微软对CMD的定义: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.

照例渣英文翻译下: Command Shell是一个独立的应用程序,它为用户提供对操作系统直接通信的功能,它为基于字符的应用程序和工具提供了非图形界面的运行环境,它执行命令并在屏幕上回显MS-DOS风格的字符。好啦我知道翻译很渣你行你上啊

综上,shellCMD并没有本质上的区别。另外,在linux/unix平台上,shell多半默认为Bash shell,当然也有其他shell,比如C shell什么的,在Windows平台上,shell=cmd.exe,如是而已。

都是命令行解释器,都是一个用户与操作系统的交互接口


都是命令解释器。提供解析命令行输入、执行程序、处理管道,以及完成一定的编程语言的能力,负责批处理文件的解析。(.sh for UNIX shell, .cmd or .bat for Windows CMD)Shell和CMD都提供针对文字终端的接口能力,或者也可以不和用户直接接口。

他俩除了用途相同之外,恐怕剩下的就全是区别了。

例如,Windows的CMD又另外承担了图形界面下终端模拟器的任务,Windows嘛,一切都大杂烩的烂作风。而Linux图形界面下,终端模拟器会被lxterminalsakuraterminator等单独的软件接管,不混杂,符合Unix风格。

常见的问题是将Windows的CMD认为是“DOS”。DOS和命令行绝对是两个概念,总把DOS挂嘴边的人真该改改观念了。

Windows如今也不光有CMD这一个Shell了。微软这个技术后进生在Shell上也在做改变。除了CMD是系统关键组件不动之外,又新作了一套PowerShell增强批处理等功能,去追赶Unix发展了几十年的脚步。


如果 lz 的 shell 指的是 linux 的 bash 的话:

  1. 路径分隔符,cmd 是 "\" ,bash 是 "/"
  2. 转义字符,cmd 是 ^ 和双引号,bash 有双引号,单引号和 "\"
  3. 顺序执行两个命令,cmd 是 cmd1 && cmd1 而 bash 是 cmd1 ; cmd2
  4. and 执行两个命令,cmd 是 cmd1 & cmd2 而 bash 是 cmd1 && cmd2
  5. 通配符实现原理不同,比如 cmd 中使用 dir *.dll 的这个“*.dll”的通配符是 dir 自己实现的,但是在 bash 中 ls *.txt 通配符是 bash 实现的,也就是说传入 ls 命令的实际参数相当于 1.txt 2.txt ... 这样子
  6. PATH 的分隔符, cmd 是分号,bash 是冒号
  7. 虽然 echo 都是内置命令,但是功能有一些差异
  8. 放在后台执行,bash 是 & ,而 cmd 是 start 命令
  9. bash 的很多功能,比如 alias ,cmd 没有对应物

还有配置方式(bash 是用配置文件,而 cmd 是在标题栏上面点右键)

区别太多了……不知道 lz 具体要问哪方面的。

【热门文章】
【热门文章】