`tty` 命令的功能是什么? 它可以显示您当前正在使用的终端的名称。 `TTY` 代表“电传打字机”。这个命令名称的由来是什么? 这需要进一步的解释。
19 世纪的电传打字机
在 19 世纪 30 年代和 40 年代,一种被称为
电传打字机
的机器被开发出来。这些机器可以将键入的消息“通过网络”发送到遥远的地方。消息由发送者在各种键盘上输入,并在接收端打印在纸上。这是继电报之后的一个进步,电报最初依赖于
莫尔斯电码
和类似的代码。
消息被编码和传输,然后被接收、解码并打印出来。有多种技术用于编码和解码消息。其中最著名也是最常用的技术之一是由
埃米尔·博多
于 1874 年获得专利的。
波特率
就是以他的名字命名的。他的字符编码方案早于
ASCII
89 年。
博多的编码最终成为电传打印机编码中最接近标准的方案,并被大多数制造商采用。博多最初的硬件设计只有五个键,类似于钢琴键。操作员需要学习每个字母的特定组合键。最终,博多编码系统与传统的键盘布局相结合。
为了纪念这一进步,这些机器被命名为电传打字机。这被缩短为电传打字机,并最终缩短为 TTY。这就是我们得到
缩写
TTY 的由来。但是,电报与计算机有什么关系呢?
ASCII 和电传
当 ASCII 于 1963 年出现时,它被电传打字机制造商采用。尽管电话的发明和广泛使用,电传打字机仍然非常流行。
电传
是一个全球性的电传打字机网络,允许在全球范围内发送书面信息。它们在二战后至
传真机
普及的 20 世纪 80 年代非常流行。
计算机也在发展。它们变得能够与用户实时交互,并支持多用户。旧的批处理方法已经不再适用。人们不想等待 24 小时或更长时间才能得到结果。制作一堆穿孔卡片并熬夜等待结果已不再被接受。
人们需要一种设备,让他们可以输入指令并将结果返回给他们。人们追求效率。
电传打字机的重新利用
电传打字机是作为输入/输出设备的理想选择。毕竟,它是一种设计用于允许输入、编码、发送、接收、解码和打印消息的设备。
如果连接另一端的设备不是另一台电传打字机,电传打字机又有什么关系呢?只要它能理解相同的编码语言,并可以接收和发送消息,电传打字机就可以正常工作。
当然,它使用了或多或少标准的键盘。
硬件模拟电传打字机
电传打字机成为那个时代与大型计算机和小型计算机交互的默认方式。
它们最终被那些使用电子设备模拟机电设备的设备所取代。这些设备使用
阴极射线管
(CRT) 来代替纸卷。当计算机传递响应时,它们没有动摇。它们允许迄今为止不可能实现的功能,例如在屏幕上移动光标、清除屏幕、文本加粗等。
DEC VT05
是虚拟电传打字机的早期示例,还有著名的
DEC VT100
。DEC VT100 售出了数百万台。
软件模拟电传打字机
在 Linux 和 macOS 等其他类 Unix 操作系统的桌面环境中,终端窗口和应用程序,如
xterm
和
Konsole
,都是虚拟电传打字机的例子。但是,这些完全是在软件中模拟的。它们被称为伪电传打字机,简称 PTS。
这就是 `tty` 命令的用武之地。
`tty` 命令能告诉我们什么?
在 Linux 中,有一个伪电传多路复用器,它处理来自所有终端窗口伪电传 (PTS) 的连接。多路复用器是主机,PTS 是从机。多路复用器由内核通过位于 /dev/ptmx 的设备文件进行寻址。
`tty` 命令会打印您的伪电传从机用于连接到主机的设备文件的名称。这实际上是终端窗口的数量。
让我们来看一下终端窗口的 `tty` 命令输出:
tty
响应显示我们已连接到位于 /dev/pts/0 的设备文件。
我们的终端窗口是电传打字机 (TTY) 的软件仿真,作为伪电传打字机 (PTS) 与伪电传打字机多路复用器接口。它恰好是零号。
静默选项
`-s`(静默)选项会导致 `tty` 不产生任何输出。
tty -s
它确实会产生一个退出值,但是:
0:如果标准输入来自 TTY 设备,无论是模拟的还是物理的。
1:如果标准输入不是来自 TTY 设备。
2:语法错误,使用了错误的命令行参数。
3:发生写入错误。
这在 Bash 脚本中可能最有用。但是,即使在命令行上,我们也可以演示如何仅当您在终端窗口(TTY 或 PTS 会话)中运行时才执行命令。
tty -s && echo "In a tty"
由于我们是在 TTY 会话中运行,因此我们的退出代码为 0,并且执行第二个命令。
`who` 命令
其他命令可以显示您的 TTY 编号。`who` 命令会列出所有已登录用户的信息,包括您自己。
Alec 和 Mary 远程连接到 Linux 计算机。它们分别连接到 PTS 1 和 2。
用户 dave 显示为连接到“:0”。
这表示与计算机物理连接的屏幕和键盘。即使屏幕和键盘是硬件设备,它们仍然通过设备文件连接到多路复用器。
`tty` 命令显示它是 /dev/pts/2。
who
tty
访问 TTY
您可以通过按住 Ctrl+Alt 键并按下一个功能键来访问全屏 TTY 会话。
Ctrl+Alt+F3 会弹出 tty3 的登录提示。
如果您登录并发出 `tty` 命令,您将看到您已连接到 /dev/tty3。
这不是伪电传打字机(在软件中模拟);它是一个虚拟电传打字机(在硬件中模拟)。它使用连接到计算机的屏幕和键盘来模拟像 DEC VT100 过去那样的虚拟电传打字机。
您可以将功能键 Ctrl+Alt 与功能键 F3 到 F6 一起使用,并且可以选择打开四个 TTY 会话。例如,您可以登录到 tty3 并按 Ctrl+Alt+F6 转到 tty6。
要返回图形桌面环境,请按 Ctrl+Alt+F2。
按 Ctrl+Alt+F1 将返回到图形桌面会话的登录提示。
曾经,从 Ctrl+Alt+F1 到 Ctrl+Alt+F6 会打开全屏 TTY 控制台,而 Ctrl+Alt+F7 会返回图形桌面环境。如果您运行的是较旧的 Linux 发行版,这可能就是您系统的运行方式。
这在当前版本的 Manjaro、Ubuntu 和 Fedora 上进行了测试,它们的行为都是这样的:
Ctrl+Alt+F1:返回图形桌面环境登录屏幕。
Ctrl+Alt+F2:返回图形桌面环境。
Ctrl+Alt+F3:打开 TTY 3。
Ctrl+Alt+F4:打开 TTY 4。
Ctrl+Alt+F5:打开 TTY 5。
Ctrl+Alt+F6:打开 TTY 6。
通过访问这些全屏控制台,人们可以仅使用命令行安装 Linux(许多 Linux 服务器都是以这种方式配置的),从而可以使用多个控制台。
曾经在使用具有图形桌面环境的 Linux 机器时,有什么东西导致您的会话冻结吗?现在您可以跳转到其中一个 TTY 控制台会话,以便尝试纠正这种情况。
您可以使用 `top` 和 `ps` 命令尝试识别失败的应用程序,然后使用 `kill` 命令终止它,或者仅使用 `shutdown` 命令尝试在计算机状态允许的情况下正常关机。
历史悠久的三个字母
`tty` 命令得名于 19 世纪后期的一种设备,它于 1971 年出现在 Unix 中,并且直到今天仍然是 Linux 和类 Unix 操作系统的一部分。
这个小命令背后有一段悠久的历史。