我认为这些术语在松散使用时几乎指的是同一件事:
- 终奌站
- 贝壳
- tty
- 安慰
这些术语分别指的是什么?
我认为这些术语在松散使用时几乎指的是同一件事:
这些术语分别指的是什么?
Answers:
终端在电线的末端,外壳是乌龟的家,tty是一个奇怪的缩写,控制台是一种机柜。
好吧,从词源上来讲,无论如何。
用Unix术语来说,简短的答案是
控制台,终端和tty密切相关。原来,他们的意思一台设备,通过它你可以与计算机交互的:在UNIX的早期,这意味着一个电传式的装置类似一台打字机,有时也被称为速记一台电传打字机,或“TTY”。从电子的角度来看,“终端”这个名字,从家具的角度来看,这个名字是“控制台”。在Unix历史的早期,电子键盘和显示器已成为终端的规范。
用unix术语来说,tty是一种特殊的设备文件,它实现了除读写之外的许多其他命令(ioctls)。在其最常见的含义中,terminal是tty的同义词。某些tty由内核代表硬件设备提供,例如,输入来自键盘,输出进入文本模式屏幕,或者输入和输出通过串行线路传输。其他tty,有时也称为伪tty,是由称为终端仿真器的程序(通过薄内核层)提供的,例如Xterm(在X Window System中运行),Screen。(在程序和另一个终端之间提供隔离层),Ssh(将一台机器上的终端与另一台机器上的程序连接起来),Expect(用于脚本化终端交互)。
终端一词还可以具有一种设备的更传统的含义,通过该设备人们可以与计算机(通常是键盘和显示器)进行交互。例如,X终端是一种瘦客户机,是一种专用计算机,其唯一目的是驱动键盘,显示器,鼠标以及偶尔其他人机交互外围设备,而实际应用程序则在另一台功能更强大的计算机上运行。
甲控制台一般是在物理意义上,是由一些定义直接连接到机器主终端的终端。控制台在操作系统中显示为(内核实现的)tty。在某些系统上,例如Linux和FreeBSD,控制台显示为多个tty(特殊的组合键在这些tty之间切换)。只是为了混淆,给每个特定tty赋予的名称可以是“控制台”,“虚拟控制台”,“虚拟终端”和其他变体。
另请参见为什么虚拟终端是“虚拟的”,以及“真实”终端在什么/为什么/在哪里?。
一个壳是主接口,用户登录时看到的,其主要目的是启动其他程序。(我不知道最初的隐喻是shell是用户的家庭环境,还是该shell是其他程序在其中运行。)
在Unix圈子中,shell专门指命令行外壳,以输入要启动的应用程序的名称为中心,然后输入应用程序应作用的文件或其他对象的名称,然后按Enter键。其他类型的环境不使用“外壳”一词;例如,窗口系统涉及“ 窗口管理器 ”和“ 桌面环境 ”,而不是“外壳”。
有许多不同的unix shell。交互式使用的流行shell包括Bash(大多数Linux安装中的默认设置),zsh(强调功能和可定制性)和fish(强调简单性)。
命令行外壳包含用于组合命令的流控制构造。除了在交互式提示下键入命令外,用户还可以编写脚本。最常见的Shell具有基于Bourne_shell的通用语法。在讨论“ shell编程 ”时,几乎总是暗示该外壳是Bourne风格的外壳。一些经常用于脚本编写但缺乏高级交互功能的外壳包括Korn外壳(ksh)和许多ash变体。几乎所有类似Unix的系统都安装了Bourne风格的shell /bin/sh
,通常是ash,ksh或bash。
在Unix系统管理中,用户的外壳程序是他们登录时调用的程序。普通用户帐户具有命令行外壳程序,但是访问受限的用户可能具有受限的外壳程序或某些其他特定命令(例如,用于文件传输) -仅帐户)。
端子和外壳之间的分工并不完全明显。这是他们的主要任务。
\e[D
)。Shell将控制序列转换为命令(例如\e[D
→ backward-char
)。M-x shell
在Emacs中。foo
”,“将前景色切换为绿色”,“将光标移至下一行”之类的指令。终端根据这些指令进行操作。printk
具有足够优先级的位置(例如,内核恐慌)。它是通过console=DEVICE,...
在内核命令行上传递来设置的(例如,console=ttyS0,115200
对于第一个串行端口,为115,200 bps)。通常,它默认为虚拟终端,但是在编译内核时可以更改。
甲终端或控制台是一个硬件,利用其用户可以与主机交互。基本上是一个键盘和一个文本屏幕。
如今,几乎所有的终端机和控制台都代表“虚拟”终端机和控制台。
代表终端的文件在传统上称为tty文件。如果在UNIX系统的“ / dev”目录下查看,则会发现很多tty文件连接到虚拟控制台(例如linux上的tty1),虚拟终端(例如pts / 0)或物理连接的硬件(例如ttyS0)是连接在主机的第一个串行端口上的物理串行终端(如果有)。
甲控制台必须是一个片物理地连接到(或部分)主机硬件的。它在系统中具有特殊作用:它是访问系统以进行维护的要点,并且某些特殊操作只能从控制台进行(例如参见single user mode
)。甲终端可以是并且通常是,硬件的远程部件。
最后但并非最不重要的一点是,shell是一个特殊程序,它通过控制tty与用户交互,并向用户提供启动其他程序(例如bash,csh,tcsh)的方式。
甲终端仿真器是模拟物理终端(例如xterm中,侏儒末端,小型机)中的程序。
因此,当您查看Linux系统(在X11下)上的“文本窗口”时,您正在寻找:一个终端仿真器,连接到由tty文件标识的虚拟终端,在其中运行shell。
tty
在终端仿真器(例如KDE的Konsole)中的命令上运行,则输出为/ dev / pts / 0。
/dev/pts/0
是一个tty文件,是内核公开的程序化接口的处理程序。通过该处理程序,程序(例如外壳)可以与终端(真实或虚拟)交互。终端仿真器是一种模拟终端的软件。仿真器要求内核创建一个处理程序,以使程序与其自身进行交互(请参阅参考资料man openpty
)。因此,信息从终端(仿真器)流向内核tty处理程序,再流向程序(反之亦然)。程序和终端不直接对话,而只能通过tty文件(处理程序)对话。
简短说明:
控制台是终端。系统具有一个控制台和可能的多个终端。控制台通常是用于管理计算机(例如,仍在启动中)的主要界面。
终端是一个会话,可以接收和发送命令行程序的输入和输出。控制台是这些的特例。
TTY本质上是一个伪设备,称其为内核资源,进程使用它来访问特定的终端。TTY可以绑定到诸如串行端口之类的硬件,也可以是虚拟的,例如当用户通过网络登录时创建的TTY
该外壳程序是用于控制和运行程序的程序。它通常通过终端以交互方式使用。存在几个Shell程序,可以说Bash是当今最常用的Shell。其他shell(无特殊顺序)包括Bourne Shell,C-shell,Dash,Tsch,Ksh和日益流行的zsh。还有更多。
使用GUI时,可以使用终端程序为终端会话绘制漂亮的可调整大小的边框,添加滚动条并设置文本格式等。这些通常称为终端仿真器,有时它们可以通过TAB概念处理多个会话。终端仿真器通常会启动命令行管理程序,以使您可以在命令行上进行交互工作。
已经有两个不错的答案,但是我想添加有关短语“虚拟终端”的信息。通常,它表示提供终端外观/功能的东西,即 e。广义上的终端仿真器。但是在Linux的早期(1994-95年),一些开发人员将其与“虚拟控制台”(几个不相关的用户界面)同义使用。这种用法在文档中仍然存在。曾经(和曾经)使用过两个不同的术语来指代tty1,tty2…thingies。如今(自≈1996年以来),“虚拟终端”也可以指基于pty的终端仿真器。
Linux vt
(文本模式系统控制台的驱动程序)是其内核的第一部分。它最初用于连接大型机,从这个意义上说,它是“虚拟终端”,因此得名。控制虚拟控制台的代码也位于其中vt.c
。Linux内核工程师始终使用“控制台”一词来表示tty1,tty2…,并使用“ vc_”作为前缀。例如,有一个vc_allocate
功能。在另一方面,这样的用户空间工具的开发kbd
和console-tools
使用的“虚拟控制台”(VC)和“虚拟终端”(VT)可互换。Ī̲与Andries E. Brouwer联系并请他澄清早期开发人员使用的术语(1994-95年)。安德烈斯提供了一些答案。他指出,VT和VC是同义词,是“不可分割的”缩写。->通常,虚拟控制台是一个虚拟终端,但事实并非如此。那些不是虚拟控制台的“虚拟终端”确实是伪终端(如Andries所说,它们不是VT)。与虚拟控制台不同,在虚拟控制台中,内核为控制台应用程序提供了终端功能,伪终端使用PTY“设备”来安排控制台应用程序与在用户空间中运行的终端制作程序之间的通信。示例是基于X的终端仿真器和sshd
,它为每个登录会话分配一个伪代码。伪娘可能不会被称为“控制台” –这是一个错误。
您需要深入了解历史。
有类似打字机的设备,带有纸和键盘。它们被称为电传打字机(意为“远程打字”,因为“ tele”意为“远程”)或ttys。在20世纪70年代,他们被带有CRT显示器的设备glass Glass ttys淘汰。
任何计算机都需要某种方式来报告其状态和错误(并可能接受命令)。它是通过控制台完成的,控制台几乎总是直接连接到计算机。因此,控制台有2个含义:用于报告状态的东西和直接连接的东西。
UNIX是一个交互式系统:多个用户可以连接到它并启动应用程序。第一台计算机为此使用电传打字机(tty):每个用户都通过串行线连接将电传打字机连接到机器。这种电传打字机称为终端。UNIX还获得了专门的子系统来处理“坐在终端后面的用户”,这也称为tty,因为第一个终端是电传打字机。每个进程都可以连接到Unix中的tty。这意味着有一个用户坐在终端附近。有关更多信息,请参见http://www.linusakesson.net/programming/tty/。
用户需要某种方式来告诉内核运行应用程序。shell(sh,bash,csh,ksh等)用于此目的。shell在tty上运行,接受用户的命令,并要求内核运行某些应用程序。
但是终端并不总是物理连接到机器。可能有一些应用程序“模拟”终端,接受用户的击键并将其发送到某处(xterm和ssh是很好的例子)。内核中有一个称为伪终端的API 。因此,您的tty可能确实连接到了某个应用程序,而不是真正的终端。Xterm使用X11显示文本,而ssh使用网络连接。
IBM PC具有键盘和视频卡(有时也称为控制台)。Linux可以用它做不同的事情:
它还可能会停止在控制台上模拟终端并将其提供给某些应用。应用可能会切换其视频模式并专门使用它(X11或svgalib可能会这样做)。
因此,这是现代含义:
/dev/console
)或连接到计算机的物理键盘和视频显示器。这是简短的答案-
内核 -任何直接与实际硬件对话的现代操作系统的最内层部分。
Shell-实际内核周围的包装器。每当我们运行命令时,我们实际上都会与shell对话,shell进而调用适当的内核指令。除此之外,shell还能执行其他一些工作,例如在拥有命令的同时查找适当的程序,一些文件名的缩写,管道命令等。
终端 -在较早的计算时代,计算机(称为大型机)是巨大的。因此,只有一个处理单元并从许多地方连接起来很容易。终端是将键盘和输出设备连接至大型机的实际硬件。
控制台 -特殊类型的终端,出于OS Administration的目的直接连接到Mainframe。
tty -TeleTypewriter,用于与大型机之间收发数据。在视频终端可用之前使用。但是按照惯例,它仍然被命名为tty。即使是普通人stty
详细的详细答案在这里- 终端,控制台,Shell,内核,命令-计算机的不同部分
root
通过sudo
或通过控制台登录名访问帐户。控制台通常具有特殊的场所特权,因为有权访问控制台的人必须对其与之通信的计算机具有物理访问权。它们也是最后的访问方法。如果操作系统处于部分损坏的状态(例如以太网驱动程序已损坏),您仍然可以访问控制台。这是一个人机接口设备应始终可用,不管是什么状态的系统是英寸
除了接受的答案和TTY揭秘的文章之外,我真的很喜欢阅读这两篇文章:
这是基于NetBSD的。
早在Unix的石器时代,计算机系统由一个大型机,一个闪烁的大盒子组成,该盒子具有内存,大容量存储和计算单元,并运行由用户或操作员启动的进程。由于硬件非常昂贵,因此这些系统被用作真正的多用户系统,许多人同时与该系统进行交互。与今天的Unix工作站不同,它通常没有的是固定的显示器和键盘。取而代之的是,先通过电传打字机,然后再使用CRT(阴极射线管)终端通过串行线路向机器发出命令并检索输出。电传打字机(这是Unix中的“ ttys”的来源)是电子打字机,用于将通过串行线路按下的键发送到主机,
这是基于Linux的。
终端是提供增强的输入/输出功能的设备,而仅使用常规文件,管道和套接字无法实现。这些功能旨在使人们更轻松地与计算机进行交互,而对于试图互相交谈的程序则毫无用处。
让我对此进行解释...在此我将或多或少地使用Unix和Linux。如果我指的是Linux之前的历史,我通常会写“ Unix”,如果我谈论的是较新的东西或特定于Linux风格的Unix,我通常会写“ Linux”。 ”。
列表中唯一一个与其他概念没有重叠的离散概念是“外壳”。Shell是一个程序,其目的是与用户通信并代表他们执行操作系统操作。
最常见的外壳使用一种称为“命令行”的技术,该技术包括向用户发送某种提示,等待用户键入文本命令,然后执行该命令。但是有基于菜单的外壳,甚至还有图形外壳(例如Windows File Explorer),尽管没有自重的Unix人士会把这种东西称为“外壳”。
在Unix中,如果有人称某个东西为“外壳”,则几乎可以肯定是指我刚才所描述的某种形式的命令行界面。如果在不使用我进一步描述的tty模型与用户进行通信的情况下,将任何东西称为“外壳”在Unix世界中是很奇怪的。
这是一个令人困惑的事情,因为它可以指代几种不同的事物。
在Linux中,有一种称为“ tty”的设备。它是一种抽象设备,有望用于与用户或正在以某种方式从用户那里获取输入的东西进行双向通信。有时,该抽象设备可能直接对应于某些物理设备。有时,它可能是一个程序,向某人显示一个窗口,在该窗口中显示通讯内容,用户可以在其中键入内容。
但是,这种抽象设备存在的原因以及它被称为“ tty”的原因是“ tty”是“ teletype”的缩写,“ teletype”是一种实际的物理设备,具有将打印机打印在纸上并结合键盘的物理设备。抽象的“ tty”设备提供给正在使用的程序的模型基本上是在另一端有一个电传打字机。您发送字符,这些字符将出现在电传打字机中。当您从中读取字符时,这些字符表示在键盘上键入的键。
基于旧纸打印机的tty很快就被视频tty所取代。当然,这些纸上没有纸卷。而且,实际上,有可能覆盖屏幕上的任何字符。但是,与其期望为程序提供某种抽象的“屏幕”界面,不如期望它们发送特殊的字符流,即逃逸序列,以完成各种任务。通常,有一个抽象的东西称为“光标”,可以在屏幕上移动,并且发送的任何字符都将替换光标处的所有字符,并且光标将使一个字符继续向前移动。通常,您还可以更改将要使用转义序列打印的字符的颜色。
有些“玻璃tty”不遵循这种模型,因此在Unix世界中处理不善。IBM 3270系列视频终端属于此类。
Linux / Unix人们通常称其为“ shell窗口”,是使用图形用户界面模拟玻璃tty。在内部,在Shell窗口内运行的程序正在与虚拟tty设备通信,该设备有时称为伪tty或伪终端(也称为pty)。
终端只是计算机和人机交互的地方。终端可能是完全图形化的,并且不会以任何方式遵循tty模型,即使程序可能会使用其功能来模拟这一点。所有实际的物理tty(玻璃或其他)都是终端。
控制台是一种特殊的终端,通常应以某种直接安全的方式将其连接到运行操作系统的硬件。
在Linux中,控制台以较小的方式虚拟化,这使您可以使用特殊的按键在虚拟控制台之间进行切换。但是,这种虚拟化是通过内核中的软件使用真正的硬件完成的。
有几种方法可以通过所谓的“串行控制台”来使用Linux,该控制台是通过串行端口(如USB端口)(或在某些非常小和/或很旧的计算机上为RS-232端口)连接到计算机的控制台。 ),并以相当严格的方式遵循旧的电传打字机模型。
同样,该控制台的想法是直接以物理方式连接到计算机,而不是通过可能允许任何人连接的某种网络连接。