计算机概念-shell
shell 与windows下的cmd区别 http://segmentfault.com/q/1010000000316935
首先说shell,shell直接翻译就是壳,按照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是命令行解释器的意思.也有内核上的一层壳的含义。
然后我们看下CMD
CMD是Command 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风格的字符。好啦我知道翻译很渣你行你上啊
综上,shell和CMD并没有本质上的区别。另外,在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图形界面下,终端模拟器会被
lxterminal
、sakura
、terminator
等单独的软件接管,不混杂,符合Unix风格。常见的问题是将Windows的CMD认为是“DOS”。DOS和命令行绝对是两个概念,总把DOS挂嘴边的人真该改改观念了。
Windows如今也不光有CMD这一个Shell了。微软这个技术后进生在Shell上也在做改变。除了CMD是系统关键组件不动之外,又新作了一套PowerShell增强批处理等功能,去追赶Unix发展了几十年的脚步。
使用方法:
- 路径分隔符,cmd 是 "\" ,bash 是 "/"
- 转义字符,cmd 是 ^ 和双引号,bash 有双引号,单引号和 "\"
- 顺序执行两个命令,cmd 是 cmd1 && cmd1 而 bash 是 cmd1 ; cmd2
- and 执行两个命令,cmd 是 cmd1 & cmd2 而 bash 是 cmd1 && cmd2
- 通配符实现原理不同,比如 cmd 中使用 dir *.dll 的这个“*.dll”的通配符是 dir 自己实现的,但是在 bash 中 ls *.txt 通配符是 bash 实现的,也就是说传入 ls 命令的实际参数相当于 1.txt 2.txt ... 这样子
- PATH 的分隔符, cmd 是分号,bash 是冒号
- 虽然 echo 都是内置命令,但是功能有一些差异
- 放在后台执行,bash 是 & ,而 cmd 是 start 命令
- bash 的很多功能,比如 alias ,cmd 没有对应物