终端或控制台或Shell或命令提示符?

我发现自己使用这些术语可以互换而不知道差异.所有这些术语之间的实际区别是什么?
是的,这些术语有很多混乱.我会给它一个刺,但条件是这是真正的语义,术语在日常演讲中可互换使用:

Shell”是用于运行其他程序的任何程序.它包裹了另一个程序,因此它的名字.所以例如,Windows资源管理器是一个shell,即使很少有人会称之为一个.在我使用的所有语言和平台中,任何程序都可以是shell.

编辑:我没有定义一个“终端”.它的名字从与用户的通信的终点.具体来说,是用于最终用户通信的打字机.今天,它更为通用,可以意味着伪终端(Linux ps -ef中的pts),它是由GUI管理的基于字符的会话.在Windows上,这将被称为“控制台窗口”.

“控制台”是指Windows和UNIX上具体但不同的特性.在UNIX上,原来这是tty(TeleTYpewriter,一个VDU是一个“玻璃电传”),它实际上已插入机器,甚至不通过加密狗(我用UNIX回去了很长时间).发送和接收启动和关闭消息的终端,以及诸如PANIC的警报. bash和Korn shell脚本都可以作为伪守护进程运行,而无需TTY /控制台.

术语“控制台”往往与“标准输入”,“标准输出”和“标准错误”(stdin,stdout,stderr,C)混淆.这些有时被称为流,并且认被定向到大多数系统上的终端.在UNIX上,它们是前三个文件描述符,在Windows上,前三个文件句柄,两个都是0,1,2.程序可以将它们引导到具有适当访问权限的任何文件系统,但通常它不会 – 它通常从父进程继承它们(并非所有的操作系​​统都在过去这样做).

在Windows上,“控制台”程序是具有控制台窗口的程序,通常不正确地称为“DOS”框.所以,cmd.exe是一个控制台程序,Perl.exe也是如此,python.exe(但不是pythonw.exe)也是如此.

命令提示符是命令行解释器或CLI显示的请求类型.按照惯例在UNIX上,除了root以外的所有用户都以$结尾,以#结尾. csh不遵循此约定并使用%.通常,Windows CLI上的提示符以>结尾.在所有情况下,这些都可以由用户改变.

我相信Windows上的cmd.exe的快捷方式和窗口标题具有标签“命令提示符”,因为它可以访问命令提示符.我有一本名为“Windows命令行”的Microsoft新闻书,其中“命令行是通过命令shell窗口访问”.所以即使是微软混合他们的条款.

所以,cmd.exe是一个shell和一个CLI,一个控制台程序. sqlplus是一个CLI,但不是一个shell,在Windows上它是一个控制台程序. Windows资源管理器是一个shell,但不是CLI或控制台程序. Bash和Korn shell都是具有CLI的shell,并且可以从控制台运行,但并不排他.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...