Laz*_*zer 1433 shell terminal tty terminology console
我认为这些术语在松散使用时几乎指的是同一件事:
这些术语中的每一个究竟指的是什么?
Gil*_*il' 1381
终端是电线的末端,贝壳是乌龟的家,tty 是一个奇怪的缩写,控制台是一种柜子。
好吧,从词源上来说,无论如何。
在 Unix 术语中,简短的回答是
控制台、终端和 tty 密切相关。原来,他们的意思一台设备,通过它你可以与计算机交互:在UNIX的早期,这意味着一个电传式的装置类似一台打字机,有时也被称为速记一台电传打字机,或“TTY”。“终端”这个名字来自电子的角度,“控制台”这个名字来自家具的角度。在 Unix 历史的早期,电子键盘和显示器成为终端的标准。
在 unix 术语中,tty是一种特殊类型的设备文件,它实现了除读写之外的许多附加命令 ( ioctls )。就其最常见的含义而言,终端是 tty 的同义词。某些 tty 由内核代表硬件设备提供,例如来自键盘的输入和输出到文本模式屏幕,或通过串行线路传输的输入和输出。其他 tty,有时称为伪 tty,由称为终端仿真器的程序提供(通过薄内核层),例如Xterm(在X Window 系统中运行)、Screen(在程序和另一个终端之间提供一层隔离)、Ssh(将一台机器上的终端与另一台机器上的程序连接起来)、Expect(用于编写终端交互的脚本)等。
终端一词也可以具有更传统的含义,指的是一种设备,通过该设备可以与计算机(通常是键盘和显示器)进行交互。例如,X 终端是一种瘦客户端,一种专用计算机,其唯一目的是驱动键盘、显示器、鼠标和偶尔的其他人机交互外围设备,实际应用程序运行在另一台更强大的计算机上。
甲控制台一般是在物理意义上,是由一些定义直接连接到机器主终端的终端。控制台在操作系统中显示为(内核实现的)tty。在某些系统上,例如 Linux 和 FreeBSD,控制台显示为多个 tty(在这些 tty 之间切换的特殊组合键);只是为了混淆问题,给每个特定 tty 的名称可以是“控制台”、“虚拟控制台”、“虚拟终端”和其他变体。
另请参阅为什么虚拟终端是“虚拟的”,“真正的”终端是什么/为什么/在哪里?.
一个壳是主界面,用户登录时看到的,其主要目的是启动其他程序。(我不知道原来的比喻是shell是用户的家庭环境,还是shell是其他程序运行的地方。)
在 unix 圈子中,shell专门表示命令行 shell,以输入要启动的应用程序的名称为中心,然后是应用程序应操作的文件或其他对象的名称,然后按 Enter 键。其他类型的环境不使用“shell”这个词;例如,窗口系统涉及“窗口管理器”和“桌面环境”,而不是“外壳”。
有许多不同的 unix shell。用于交互式使用的流行 shell 包括Bash(大多数 Linux 安装的默认设置)、zsh(强调功能和可定制性)和fish(强调简单性)。
命令行 shell 包括用于组合命令的流控制结构。除了在交互式提示下键入命令外,用户还可以编写脚本。最常见的 shell 具有基于Bourne_shell的通用语法。在讨论“ shell 编程”时,几乎总是暗示 shell 是 Bourne 风格的 shell。一些经常用于脚本编写但缺乏高级交互功能的 shell包括Korn shell (ksh)和许多ash变体。几乎所有类 Unix 系统都安装了 Bourne 风格的 shell /bin/sh,通常是 ash、ksh 或 bash。
在 unix 系统管理中,用户的shell是在他们登录时调用的程序。普通用户帐户有一个命令行 shell,但访问受限的用户可能有一个受限的 shell或一些其他特定命令(例如,用于文件传输- 仅限帐户)。
终端和外壳之间的分工并不完全明显。以下是他们的主要任务。
\e[D)。Shell 将控制序列转换为命令(例如\e[D? backward-char)。M-x shell在 Emacs 中。foo”、“将前景色切换为绿色”、“将光标移动到下一行”等指令,终端根据这些指令进行操作。and*_*coz 211
甲终端或控制台是一个硬件,利用其用户可以与主机交互。基本上是一个键盘加上一个文本屏幕。
现在几乎所有的终端和控制台都代表“虚拟”的。
代表终端的文件传统上称为tty文件。如果你查看 UNIX 系统的“/dev”目录,你会发现很多tty文件连接到虚拟控制台(例如 linux 上的 tty1)、虚拟终端(例如 pts/0)或物理连接的硬件(例如 ttyS0)是连接在主机第一个串行端口上的物理串行终端(如果有)。
甲控制台必须是一个片物理地连接到(或部分)主机硬件的。它在系统中具有特殊的作用:它是访问系统进行维护的主要点,某些特殊操作只能从控制台完成(例如参见single user mode)。甲终端可以是并且通常是,硬件的远程部件。
最后,但并非最不重要的一点是,shell是一种特殊的程序,它通过控制 tty与用户交互并向用户提供启动其他程序(例如 bash、csh、tcsh)的方式。
甲终端仿真器是模拟物理终端的程序(例如xterm中,侏儒末端,小型机)。
因此,当您查看 linux 系统(在 X11 下)上的“文本窗口”时,您会看到:一个终端模拟器,连接到一个虚拟终端,由一个tty文件标识,其中运行一个shell。
Joh*_*han 55
简短说明:
控制台是一个终端。一个系统有一个控制台和可能有多个终端。控制台通常是管理计算机的主要界面,例如,当它仍在启动时。
终端是一个会话,可以接收和发送命令行程序的输入和输出。控制台是其中的一个特例。
TTY 本质上是一个伪设备,称之为内核资源,进程使用它来访问特定终端。TTY 可以绑定到硬件(例如串行端口),也可以是虚拟的,例如在用户通过网络登录时创建
shell是一个用来控制和运行程序的程序。它通常通过终端交互使用。存在多种 Shell 程序,Bash 可以说是当今最常用的 Shell。其他 shell,没有特别的顺序,包括 Bourne Shell、C-shell、Dash、Tsch、Ksh 和越来越流行的 zsh。还有更多。
当您拥有 GUI 时,您可以使用终端程序为终端会话绘制漂亮的可调整大小的边框、添加滚动条和格式化文本等等。通常这些被称为终端模拟器,有时它们可以通过 TAB 概念处理多个会话。终端仿真器通常会启动一个 Shell,以允许您以交互方式在命令行上工作。
Pre*_*raj 45
一个TTY(即牛逼ELE TY pewriter)是一个特殊的装置,可以让人们谁是耳聋,重听或言语障碍的使用电话,让他们键入文本消息进行通信。对话的两端都需要 TTY 才能进行通信。
OR
TTY是用于输入文本消息的终端。
壳:种子的外部保护性覆盖部分,即仁。
或
框架或外部结构到系统的中心或基本部分。

控制台是指键盘和显示器物理连接到计算机。
Inc*_*rsi 31
已经有两个很好的答案,但我想添加有关短语“虚拟终端”的信息。通常,它意味着提供终端外观/功能的东西,即 广义上的终端模拟器。但是在 Linux 的早期(1994-95),它被一些开发人员用作“虚拟控制台”(几个不相关的用户界面)的同义词。这种用法在文档中一直存在;两个不同的术语曾经(和现在)用来指代 tty1、tty2……东西。如今(自 1996 年以来)“虚拟终端”也可以指基于pty的终端仿真器。
Linux vt(文本模式系统控制台的驱动程序)是其内核的第一部分。它最初用于连接到大型机,从这个意义上说,它是一个“虚拟终端”,因此得名。控制虚拟控制台的代码也位于其中vt.c。Linux 内核工程师一贯使用“控制台”一词来表示 tty1、tty2……并使用“vc_”前缀来表示它们。例如,有一个vc_allocate函数。在另一方面,这样的用户空间工具的开发kbd和console-tools可互换使用的“虚拟控制台”(VC)和“虚拟终端”(VT)。我已经联系过安德里斯?E。布劳威尔并要求他澄清早期开发人员(1994-95)使用的术语。安德里斯好心地提供了一些答案。他指出 VT 和 VC 是同义词和“不可分割的”缩写。
一般来说,虚拟控制台是一个虚拟终端,但反之则不然。那些不是虚拟控制台的“虚拟终端”确实是伪终端(正如安德里斯所说,它们不是 VT)。与内核为控制台应用程序提供终端功能的虚拟控制台不同,伪终端使用 PTY“设备”来安排控制台应用程序和在用户空间中运行的终端制作程序之间的通信。示例是基于 X 的终端模拟器和sshd,它为每个登录会话分配一个伪代码。假人可能不会被称为“控制台”?——这是一个错误。
Rak*_*kib 17
终端 = 提供输出显示和输入到 shell 会话的键盘的接口。
Shell = 执行输入为字符串的命令的解释器
控制台:实际上我们使用两种类型的控制台:
tty(电传打字机,即终端)=终端基本上只是一个用户界面设备,它使用文本输入和输出消息。
Pal*_*ndu 12
这是简短的答案-
内核- 任何现代操作系统的最内部,它直接与实际硬件对话。
Shell - 实际内核的包装器。每当我们运行命令时,我们实际上是在与 shell 对话,后者又会调用适当的内核指令。除此之外,shell 还能够执行其他一些操作,例如在有命令的同时查找合适的程序、一些文件名简写、管道命令等。
终端- 在早期计算时代,计算机(称为大型机)是巨大的。因此,拥有一个处理单元并从多个地方连接它很容易。终端是连接到主机的键盘和输出设备的实际硬件。
控制台- 直接连接到大型机用于操作系统管理的特殊类型终端。
tty - TeleTypewriter 用于向大型机发送数据和从大型机接收数据。在视频终端可用之前使用。但传统上它仍然被命名为 tty。连命令stty
详细的答案在这里 -终端、控制台、外壳、内核、命令 - 计算机的不同部分
use*_*142 12
你需要深入了解历史。
有类似打字机的设备,带有纸和键盘。它们被称为电传打字机(意思是“远程打字”,因为“tele”的意思是“远程”)或简称ttys。在 70 年代,它们被称为 glass ttys 的带有 CRT 显示器的设备所淘汰。
任何计算机都需要某种方式来报告其状态和错误(并且可能接受命令)。它是通过控制台完成的,控制台几乎总是直接连接到计算机。因此,console有两种含义:用于报告状态的东西和直接连接的东西。
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) 或连接到计算机的物理键盘和视频显示器。除了接受的答案和TTY 揭秘文章之外,我真的很喜欢阅读这些文章:
这是基于 NetBSD 的。
回到 Unix 的石器时代,计算机系统由一个大型机、一个装有内存、海量存储和计算单元的闪烁灯的大盒子组成,并运行由用户或操作员启动的进程。由于硬件非常昂贵,系统被用作真正的多用户系统,许多人同时与系统交互。它通常没有——与今天的 Unix 工作站不同——是一个固定的显示器和键盘。相反,向机器发出命令和检索输出是通过串行线路完成的,首先使用电传打字机,然后使用 CRT(阴极射线管)终端。电传打字机——这就是 Unix 中的“ttys”的来源——是电子打字机,将通过串行线路按下的按键发送到主机,
这个是基于Linux的。
终端是提供增强的输入/输出功能的设备,超出了仅使用常规文件、管道和套接字所能实现的功能。这些功能旨在使人类更容易与计算机交互,而对于试图相互交谈的程序则毫无用处。
这个是基于Linux的。
一般来说,终端是一种相对笨拙的机电设备,具有输入接口(如键盘)和输出接口(如显示器或纸张)。
还有一个由 Brian Will 在 YouTube 上制作的关于终端和外壳的介绍性播放列表。
让我来分析一下……我将在这方面或多或少地将 Unix 和 Linux 用作同义词。如果我指的是早于 Linux 存在的历史事物,我通常会写“Unix”,如果我谈论的是更近的事物,或者特定于 Linux 风格的 Unix,我通常会写“Linux ”。
您列表中唯一与其他概念没有重叠的离散概念是“外壳”。shell 是一个程序,其目的是与用户进行通信并代表他们执行操作系统操作。
最常见的 shell 使用一种称为“命令行”的技术,它包括向用户发送某种提示,等待用户输入文本命令,然后执行该命令。但是有基于菜单的 shell,甚至图形 shell(如 Windows 文件资源管理器),尽管没有自尊的 Unix 人会称这样的东西为“shell”。
在 Unix 中,如果有人将某些东西称为“shell”,那么他们几乎肯定是指某种形式的命令行界面,正如我刚刚描述的那样。在 Unix 世界中,如果不使用我进一步描述的 tty 模型与用户通信,那么将任何东西称为“shell”是非常奇怪的。
这是一个令人困惑的问题,因为它可以指代几种不同的事物。
在 Linux 中,有一种称为“tty”的设备。它是一种抽象设备,可用于与用户或以某种方式从用户获取输入的事物进行双向通信。有时,该抽象设备可能直接对应于某个物理设备。有时它可能是一个程序,它向某人显示一个窗口,在该窗口中出现通信并且用户可以在其中键入。
但是,这个抽象设备存在的原因以及它被称为“tty”的原因是“tty”是“电传打字机”的缩写,它是一种实际的物理设备,具有打印在纸上的打印机和键盘。抽象的“tty”设备呈现给正在使用它的程序的模型基本上是另一端有一个电传打字机。你给它发送字符,这些字符会出现在电传打字机上。当你从中读取字符,这些字符代表了输入键盘上的键。
旧的基于纸张打印机的 ttys 很快被视频 ttys 取代。当然,在那些上,没有纸卷。而且,事实上,可以覆盖屏幕上的任何字符。但是,不是向程序提供某种抽象的“屏幕”界面,而是期望程序发送称为转义序列的特殊字符流,以完成各种任务。通常有一个抽象的东西叫做“光标”,它可以在屏幕上移动,发送的任何字符都将替换光标处的任何内容,光标将进一步移动一个字符。通常,您也可以更改即将使用转义序列打印的字符的颜色。
有一些不遵循此模型的“玻璃 tty”,因此在 Unix 世界中处理得不好。IBM 3270 系列视频终端属于这一类。
Linux/Unix 人们通常所说的“shell 窗口”是使用图形用户界面对玻璃 tty 的模拟。在内部,在 shell 窗口内运行的程序正在与虚拟 tty 设备对话,该设备有时称为伪 tty 或伪终端(又名 pty)。
终端只是计算机和人应该进行交互的地方。终端可能是完全图形化的,并且不会以任何方式遵循 tty 模型,即使程序可能会使用它们的功能来模拟这一点。所有实际的物理 tty(玻璃或其他)都是终端。
控制台是一种特殊的终端,通常应该以某种直接安全的方式连接到运行操作系统的硬件。
在 Linux 中,控制台以一种小的方式虚拟化,允许您使用特殊的按键在虚拟控制台之间切换。但是这种虚拟化是通过内核中的软件使用真正的硬件完成的。
有很多方法可以通过所谓的“串行控制台”来使用 Linux,这是一个通过串行端口(如 USB 端口)连接到计算机的控制台(或者,在一些非常小的和/或非常旧的计算机上,一个 RS-232 端口某种形式)并以相当严格的方式遵循旧的电传打字机模型。
同样,这个想法是这个控制台以直接物理方式连接到计算机,而不是通过某种可能允许任何人连接的网络。
| 归档时间: |
|
| 查看次数: |
421588 次 |
| 最近记录: |