终端,控制台,命令行管理程序和命令行之间有什么区别?
终端,控制台,命令行管理程序和命令行之间有什么区别?
Answers:
简短答案:
长答案:
控制台和终端紧密相关。原来,他们的意思一台设备,通过它你可以与计算机交互的:在UNIX的早期,这意味着一个电传式的装置类似一台打字机,有时也被称为速记一台电传打字机,或“TTY”。从电子的角度来看,“终端”这个名字,从家具的角度来看,这个名字是“控制台”。在Unix历史的早期,电子键盘和显示器已成为终端的规范。
用unix术语来说,终端是一种特殊的设备文件,它实现了除读写之外的许多其他命令(ioctls)。某些终端由内核代表硬件设备提供,例如,输入来自键盘,输出进入文本模式屏幕,或者输入和输出通过串行线路传输。其他终端(有时称为伪终端或伪tty)由称为终端仿真器的程序(通过薄内核层)提供。某些类型的终端模拟器包括:
终端一词还可以具有一种设备的更传统的含义,通过该设备人们可以与计算机(通常是键盘和显示器)进行交互。例如,X终端是一种瘦客户机,是一种专用计算机,其唯一目的是驱动键盘,显示器,鼠标以及偶尔其他人机交互外围设备,而实际应用程序则在另一台功能更强大的计算机上运行。
甲控制台一般是在物理意义上,是由一些定义直接连接到机器主终端的终端。控制台在操作系统中显示为(内核实现的)终端。在某些系统上,例如Linux和FreeBSD,控制台显示为几个终端(ttys)(特殊的组合键在这些终端之间切换)。只是为了混淆,给每个特定终端的名称可以是“控制台”,“虚拟控制台”,“虚拟终端”和其他变体。
另请参见为什么虚拟终端是“虚拟的”,以及“真实”终端在什么/为什么/在哪里?。
甲命令行是用户类型的命令(其表达为字符序列-通常是一个命令的名称,随后一些参数)的接口,并按下Return执行该命令键。
一个壳是主接口,用户登录时看到的,其主要目的是启动其他程序。(我不知道最初的隐喻是shell是用户的家庭环境,还是该shell是其他程序在其中运行。)
在UNIX圈子中,shell专门指命令行外壳,以输入要启动的应用程序的名称为中心,然后输入应用程序应作用的文件或其他对象的名称,然后按Enter键。其他类型的环境(最近出现的Gnome Shell例外)通常不使用“ shell”一词;例如,窗口系统涉及“ 窗口管理器 ”和“ 桌面环境 ”,而不是“外壳”。
有许多不同的unix shell。Ubuntu的默认外壳是Bash(与大多数其他Linux发行版一样)。流行的替代方法包括zsh(强调功能和可定制性)和fish(强调简单性)。
命令行外壳包含用于组合命令的流控制构造。除了在交互式提示下键入命令外,用户还可以编写脚本。最常见的Shell具有基于Bourne_shell的通用语法。在讨论“ shell编程 ”时,几乎总是暗示该外壳是Bourne风格的外壳。一些经常用于脚本编写但缺乏高级交互功能的外壳包括Korn外壳(ksh)和许多ash变体。几乎所有类似Unix的系统都安装了Bourne风格的shell /bin/sh
,通常是ash,ksh或bash。在Ubuntu,/bin/sh
是短跑,灰变种(选择,因为它是更快和使用较少的内存比bash)的。
在Unix系统管理中,用户的外壳程序是他们登录时调用的程序。普通用户帐户具有命令行外壳程序,但是访问受限的用户可能具有受限的外壳程序或某些其他特定命令(例如,用于文件传输) -仅帐户)。
端子和外壳之间的分工并不完全明显。这是他们的主要任务。
\e[D
)。Shell将控制序列转换为命令(例如\e[D
→ backward-char
)。M-x shell
在Emacs中。foo
”,“将前景色切换为绿色”,“将光标移至下一行”之类的指令。终端根据这些指令进行操作。从Unix和Linux回收
CONFIG_TTY
。对终端仿真器(更正确地称为伪终端,“终端仿真器”并不总是包括telnetd,screen,expect等)的支持由来控制CONFIG_UNIX98_PTYS
。对PC文本模式显示和键盘等的支持由来控制CONFIG_VT
。请参阅drivers/tty/Kconfig
内核源代码。
视觉表示。
你可以坐下来,像老板一样工作。
一些硬件可以完成很多工作。
控制台的另一个示例是视频游戏控制台,例如Super Nintendo [您可以在其中玩Actraiser]
基本上是一个用于运行命令的应用程序。
基本上任何您输入命令的内容。
来自Linux信息项目:
终端:从技术上讲,终端窗口(也称为终端仿真器)是图形用户界面(GUI)中模拟控制台的纯文本窗口。
用我们的话说就是GUI应用程序,从这里我们可以访问用户的控制台。
控制台:包含计算机控件的仪表板
Shell:Shell是一个程序,可为Linux和其他类似Unix的操作系统提供传统的纯文本用户界面
命令行:命令行是计算机监视器(通常为CRT或LCD面板)上全文本显示模式下命令提示符右侧的空间,用户可在其中输入命令和数据
这里的答案似乎很好。但是,对于我的口味而言,它们太干又太技术性,所以我会考虑一下。
终点是某物的终点-终点。例如,如果您在某个城市乘地铁,您下车的车站就是您的终点站。或者在机场,人们到达目的地国家/地区时出来的地方被视为航站楼。如今,机场航站楼之所以成为人们登机的地方,还是人们下飞机的地方,都是出于明显的经济原因。
计算机的目的是获取数据,对其进行处理并吐出结果。因此,终端是可以从中获取计算结果的任何设备(例如屏幕)。碰巧,在最初的计算机中,通常将输入(键盘)和输出(屏幕)作为单个设备。因此,当今的终端被视为任何输入/输出设备。鼠标,键盘,屏幕,照相机都是端子。
Shell是OS的东西。在计算机上,您具有内核,例如在Ubuntu上是Linux部分。现在,由于内核确实是低级的,因此提供了一个shell-一个程序,使用户可以轻松地与内核进行交互。例如,这就是BASH。
控制台是(来自词典)
包含机器,一件电气设备等的控件的平面。
这就是为什么在音乐行业中带有所有旋钮的面板,或者在命令表的航天飞机中,它们都被视为控制台的原因。超级任天堂和PS2在历史上也被称为游戏机,因为第一个这样的娱乐设备看上去就像盒子上带有一堆按钮。
命令行只是一个界面-与GUI相反。即,计算机上有两种类型的接口:CLI(命令行界面)和GUI(图形用户界面)。主要区别在于,第一个从键盘输入,而第二个从鼠标输入。
总结一下我的答案:
Shell是一个processes
命令和returns
输出程序,就像Linux中的bash一样。
Terminal是一个程序,它是run
一个外壳程序,过去是一个物理设备(在终端是带键盘的显示器之前,它们是电传打字机),然后将其概念转移到Gnome-Terminal等软件中。
因此,我打开Gnome-Terminal,出现一个运行Shell的黑色窗口,以便我可以运行命令。
控制台是一种特殊的终端,它也是一种物理设备。在Linux的例子中virtual console
,我可以通过Ctrl+ Alt+ 的组合来访问它们F1 to F7。
控制台有时表示物理连接到此计算机的键盘和监视器。
这些术语经常一起使用,因此人们使用其中一个术语来引用集合。(即从上下文中通常很明显,它们表示一个提供与命令行shell界面的终端窗口)。
为了避免这个问题变得冗长,我只想说xterm是XTerm / Gnome Terminal / Konsole / mrxvt / etc / etc的替代者。bash也是如此。
控制台还有其他多种特定含义,因此暂时将其忽略。
终端:通过双向ASCII / UTF8 /其他字符流(通常使用VT100或类似的转义码处理)提供与程序的人机交互的功能。(例如,退格键,删除键,箭头键等会生成转义码。程序可以打印转义码,以在终端屏幕上移动光标,切换为粗体和/或彩色,清除或滚动屏幕等。)过去,这通常是带有屏幕和键盘以及串行端口的专用设备。现在,它通常是xterm之类的程序。
有设备文件供程序从终端读取/写入终端,虚拟终端也可以将另一端作为设备文件访问。这是xterm写入您的输入的地方,以便bash可以读取它。
每个终端(包括虚拟终端)处于煮熟(而不是原始)模式时,都可以提供基本的行编辑。这由内核代码处理。bash提供了可以使用箭头键进行的行编辑的功能。(cat
如果您想查看内核提供的基本行编辑是什么样的,请尝试运行并输入内容。退格键有效,并且根据您的stty设置,还可以进行其他操作。)
即使终端设备后面有很多内核代码,也将其称为终端处理代码,而不是终端本身。
编辑:吉尔(Gilles)已经说服我,将tty称为终端是正确的用法。终端仿真器以及与终端连接运行的交互式程序,都取决于内核实现的终端语义。(大多数行为是由POSIX标准化的,并且在Linux / * BSD /其他Unix中是相同的。)全屏文本编辑器取决于Unix tty行为以及光标移动转义码处理,和终端仿真器的许多其他功能。
但是,具有屏幕,键盘和串行端口的物理VT100是终端的一个实例。它不需要串行端口另一端的Unix内核即可完成。可能完全不同的是,将其发送转义码和ASCII文本,然后从中接收相同的内容。它只是VT100,而不是Unix终端。终端仿真器加上Unix tty语义构成了通常运行bash之类的Unix终端的完整程序包。
命令行是一种用户界面样式,您可以在其中键入一些内容,然后按回车键以使某些事情发生。它也用作命令行shell(如bash或MS-DOS)的简写,但是您也可以对fdisk之类的内容说“这是一个命令行工具”。仅考虑将终端用于其UI的程序,两个主要族是命令行和全屏文本(例如,诸如vi或的编辑器emacs -nw
)。
通常在终端上运行的命令行程序几乎始终可以将其输入和输出重定向到文件上,但是基于终端的全屏程序(例如编辑器或电子邮件客户端)仅是交互式的,因此无法使用。
一个外壳是启动其他程序的程序。在Unix上下文中,通常指的是命令行shell(即Bourne shell或等效的C shell)。Unix shell也可以从文件(即shell脚本)读取其输入。它们是完整的编程语言,具有变量,循环和条件,并且许多程序都是用bash编写的(或者仅具有/bin/sh
POSIX shell功能,以提高可移植性)。也可以轻松地for i in *.something; do some_program "$i";done
在交互式shell中编写快捷方式 。
放在一起,像bash这样的shell(或通过运行shell命令启动的任何程序)将/dev/pts/N
在xterm将您的输入写入到伪终端一侧后,从终端设备接收字符。如果您运行cat
,然后点击^c
,则内核tty代码将作用于上^c
,并将a发送SIGINT
到该终端上的前台进程。(注意终端的用法在这种情况下,它表示的是Unix tty,而不是终端仿真器或连接到串行端口的东西。)之所以发生这种情况,是因为Shell在启动任何程序之前将终端置于“煮熟”模式,这意味着内核将对某些控件进行操作-序列。(tty代码仍然与处理VT100转义代码无关,只是与一些低ASCII控制代码无关。)如果您使用Linux控制台文本终端而不是xterm,则内核正在执行VT100仿真,并且处理所有这些东西。可以在没有虚拟控制台文本终端支持的情况下编译Linux,但在没有tty支持的情况下不能编译。
控制台有时被用作终端的同义词(KDE甚至有一个名为Konsole的终端仿真器)。
正如0xSheepdog指出的那样,它还有另一个含义:本地连接的人机交互硬件。
在内核上下文中,控制台还有另一种特定含义:控制台是写入引导消息的终端。这可以是一个串行端口。当然,通常情况下,通常是内核在图形硬件和USB / ps2 / AT键盘驱动程序之上实现的文本控制台。如果console=tty0 console=ttyS0,115200n8
在命令行中使用Linux启动,则会在屏幕上以及在串行端口上获得内核消息。
Linux实现了虚拟控制台(/dev/tty1
至N)。您可以使用Ctrl+ Alt+ 交换您的物理屏幕/键盘正在控制的屏幕。典型的Linux发行版创建6,然后全部启动,因此即使您不能启动X11,也可以登录6次并在命令,手册页和其他任何内容之间切换运行屏幕之类的程序。Linux(内核)包括VT100样式的终端仿真器,可通过虚拟控制台上的屏幕和键盘提供终端接口。FNgetty
带登录提示的标准6个虚拟终端是Ctrl+ Alt+带F7您回到X11会话的原因:X服务器获取下一个可用的虚拟控制台。(不过,X服务器会/dev/input/...
直接打开,而不是从中获取按键/dev/tty7
。)
因此,“交换到文本控制台”意味着按下Ctrl+ Alt+ F1并使用该终端。早在计算机运行缓慢且没有太多RAM的时候,有些人在文本控制台上花费了很多时间,因为它们速度很快,您可以设置一个不错的字体,甚至将终端大小更改为较小的字符,但是一次在屏幕上显示更多。 Alt+ Left和Alt+ Right交换到上一个/下一个控制台。(当然,X11为其控制台禁用了此功能,仅保留Ctrl+ Alt+ 组合键。)FN
因此,控制台是其中唯一没有一个明确定义的技术含义的术语。它有几个不同的。(根据您对终端正确与终端加上tty处理的感觉,您可以说终端也有多种含义。)
/dev/console
。控制台并不是特别模棱两可的-尽管偶尔在更一般的终端意义上使用控制台,但这种情况非常罕见(比终端专门用来表示控制台要少得多)。
我认为,在分时使用计算机的早期,每个用户都有一个终端(只要有机会就可以使用它!),但是只有系统操作员才有一个控制台。该控制台可用于诸如重启计算机或获取用户终端无法完成的系统诊断之类的任务。控制台在机房中,机房是计算机的固有部分,而终端可以是远程的。控制台还将包括硬件灯和开关,而不仅仅是文本输入和输出。
我要说的是,命令行是用户可以键入命令的区域,而shell是解释/服从该命令的程序。术语“ shell”对于Unix派生类非常特殊。在Windows / DOS传统中,“命令行”更多。大型机上的等效语言通常称为“作业控制语言”。
显然,随着技术的发展,这些原始的区别随着时间的流逝而变得模糊。
尝试以用户为中心的简短答案:
命令行 -输入命令的行。通常,它用来告诉您需要在操作系统提供的文本模式窗口(命令行界面)中运行某些内容。
shell-操作系统运行的实际程序,用于处理您输入的内容command line
。因此,名称为-非友好OS内核的用户友好外壳。它提供命令提示符,例如$
或>
,运行其自己的命令和应用程序。您始终会通过该shell
程序进行操作,而不会直接在控制台或终端上进行操作。
控制台 -是运行文本模式程序的窗口。该窗口处理按键,知道它的宽度和高度。可以全屏显示。
终端 -带有人类显示屏的某些设备,可以接受字符输入并显示它们。没有关于高度或宽度(仅hack)或键盘按键的反馈给用户-只有字符正在向其移动。终端在此流中处理特殊的序列,以使事物变色,清理屏幕并执行其他令人讨厌的事情。终端是易碎的,因为如果要传递给输出的文件包含特殊序列,则很容易使事情混乱。它们在网络和设备调试接口中很流行,因为您只需要一个流就可以发送输出并控制输出设备,并且您可以tap
进行对话而无需初始化或创建窗口。
串行控制台 -是一个像终端一样处理输入流的控制台。
这是一个模糊的话题,因为这些术语非常含糊。我强烈建议您阅读我在整个答案中提供的链接,这些链接也是我获得此答案的来源。
甲壳是内核上的层:
甲终端有许多含义:
一个控制台有很多含义:
通常,操作系统允许您在物理控制台上运行多个控制台(控制台定义2)。这些称为虚拟控制台,又称为虚拟终端,可以通过ctrl+ alt+ Fx组合进行访问。例如,如果要打开第3个虚拟控制台,请使用ctrl+ alt+ 组合键F3。
控制台(定义3)在您看来可能不合时宜,但专家应该放心使用它们,因为许多操作系统不支持GUI。另外,如果GUI停止响应,则控制台可能仍然可以工作。
如今,大多数终端严格来说都是终端仿真器。它是类UNIX系统中的一种角色,同时又是系统提供的基本接口。实际上,包括GUI在内的所有内容都建立在其之上。
口语中的“终端”也可以指具有星形地形的计算机网络中的端点。
控制台是指终端的(硬件)接口。即有串行控制台,如今主要是虚拟控制台。
俗称“控制台”窗口的窗口是一个外壳,通过虚拟控制台连接到系统的终端。
早在计算机昂贵的时候,一个设施可能已经通过串行电缆(“串行控制台”)连接了一台实际的计算机和多个终端。OS,操作等在物理计算机上执行,输入和输出在控制台上进行。
您可以通过按CTRL+ ALT+ F1(从到F6)在虚拟终端之间切换:这些时间的剩余时间。
如今,“瘦客户机”的概念又回到了集中大量资源并提供足够硬件以在实际工作场所提供最先进接口的方向。
shell是您在终端中看到的“引擎”。它提供了与系统本身的互操作性,并添加了诸如自动完成,变量等漂亮的功能。
它在使用系统调用的实际OS /内核与您之间来回转换。没有外壳程序的系统调用有点像编码,assembler
而外壳程序至少可以为您提供C
。
命令行是指通过文本窗口交换输入和输出的方法。严格地说在其中键入是行了(目前的)命令行。通常将该方法更正确地称为命令行界面或CLI。