Total Pageviews

Thursday 1 July 2021

译:Linux 中的 TTY 是什么

 原文链接:What is a TTY on Linux? (and How to Use the tty Command)

tty命令是干什么的?它打印出你正在使用的终端名。TTY 代表 “电传打字机(teletypewriter)”。 这个命令名字背后的故事是什么?这需要更多解释。

19世纪的电传打字机

在19世纪30年代至40年代,称为电传打字机的机器被开发出来。这些机器可以将输入的消息通过“线下(down the wire)”传输到遥远的地方。消息是由发送者在各种键盘上输入的。它们在接收端被打印在纸上。它们是电报中的一个进化步骤,在以前是通过摩斯电码和类似的编码进行传输。

消息被编码和传输然后被接收、解码和打印。有数种技术被用于编码和解码消息。其中最著名、最多产的一项专利是1874年由埃米尔·博多(Émile Baudot)获得的,波特率(baud rate)就是以他的名字命名的。他的字符编码方案比ASCII早了89年。

最终,波特的编码成为了在电传打字机编码中最接近标准的编码,他被大多数厂商采纳。波特原始的硬件设计只有5个按键,就像钢琴键一样。操作者被要求为每一个字母学习特殊的按键组合。最终,波特编码系统被结合进了传统的键盘布局。

为了纪念这个进步,这个机器被命名为电传打字机(teletypewriters)。这被缩短为teletypes并且最后称为TTYS。这就是TTY这个首字母缩写的由来,但是电报和计算机有什么关系?

ASCII 和 电报

当 ASCII 于1963年问世时,它被电传打字机制造商采用。尽管电话被发明和得到了广泛的使用,电传打字机依然在发展。

电报是一个世界范围的电传打字机网络,可以将书面消息发往全球。在第二次世界大战之后到1980年代传真机火热期间,它们是传输书面消息的主要手段。

计算机也不断发展。他们变得能够与用户实时交互并且能够支持多个用户。老旧的批处理方法变得无法满足需求。人们步希望等待24小时或更久来得到结果。制作一堆打孔卡带然后等上个几夜来获得结果已经无法接收。

人们需要一个设备能够让他们输入指令并且直接返回结果给他们。人们想要效率。

电传打字机的新用途

电传打字机是一个完美的输入/输出设备选择。毕竟他是一种能够打字,编码,发送,接收,解码和打印的设备。

电传打字机关注如果连接在另一端的设备不是另一个电传打字机吗?只要它使用相同的编码语言并且能够接收并发送消息回来电传打字机就很开心。

当然,它也多少使用了标准键盘。

硬件模拟的电传打字机

电传打字机成了那个年代与微型计算机和大型计算机的默认方式。

他们最终被使用电子模拟这些机电器械的设备所取代。这些设备使用阴极射线管(Cathode Ray Tubes (CRTs))而不是卷纸。当计算机传输响应时,他们不会抖动。他们允许使用至今无法实现的功能,例如在屏幕周围移动光标,清空屏幕,加粗字体,以及更多。 [ They were eventually replaced by devices that emulated those electro-mechanical machines using electronics. These had Cathode Ray Tubes (CRTs) instead of paper rolls. They didn’t shake when delivering responses from the computer. They permitted hitherto impossible functionality, such as moving the cursor around the screen, clearing the screen, bolding text, and so on. ]

DEC VT05 是虚拟电传打字机的早期示例,并且是著名的 DEC VT100 的祖先。DEC VT100 被售出了数百万台。

软件模拟的电传打字机

在 Linux 和其他类 Unix 操作系统例如macOS的桌面环境中,终端窗口和例如 x-term 和 Konsole 的应用程序是虚拟电传打字机的样例。但是这些是完全从软件层面实现的他们被称为伪电传打字机(pseudo-teletypes),缩写为 PTS。

这就是 TTY 的由来。

TTY 能告诉我们什么


在 Linux 中有一个伪电传打字机多路复用器(pseudo-teletype multiplexor)来处理来自终端窗口伪电传打字机(PTS)的连接。这个多路复用器是 master,PTS是 slave, 多路复用器由内核通过位于 /dev/ptmx 下的设备文件进行寻址。

tty 命令将打印你的使用了 master 接口的 slave 伪电传打字机的设备文件名称。[The tty command will print the name of the device file that your pseudo-teletype slave is using to interface to the master.] 实际上这就是终端窗口的编号。

让我们看看 tty 为我们的终端窗口报告了什么:


No comments:

Post a Comment