Ctrl-S的意义是什么?


135

Ctrl+ S停止所有输出到可以用Ctrl+ 重新启动的端子Q

但是,为什么Ctrl+ S首先存在?通过将该控制顺序放置到位,试图解决什么问题?


5
参见:linusakesson.net/programming/tty(阅读所有内容,尤其是有关流控制的部分...)
Olivier Dulac 2014年

8
已经使用Ctrl-S / Ctrl-Q多次保存了我的培根,以阻止错误消息在几乎没有功能的系统上的失控输出,因此我可以看到它们是什么。
DocSalvager 2014年

4
附带说明一下,我.bashrc要禁用这两个功能:stty stop ''; stty start '';。这使Ctrl-S可以自由用作其转义字符screen,而在my .screenrc:中escape ^Ss。反过来,这意味着我可以使用标准的readline快捷键Ctrl-A来表示“行的开头”(与Ctrl-E来表示“行的结尾”相匹配,并且比起Home和End,对终端仿真的脆弱性要小)。:D
IMSoP,2014年

Answers:


155

在计算机出现很久之前,就有电传打字机(又名电传打字机,又名电传打字机)。可以将它们想像成与电报机大致相同的技术,但是要附加某种类型的键盘和某种类型的打印机。

由于电传打字机在最初建造计算机时就已经存在,并且由于当时的计算机是机房大小的,因此电传打字机成为了第一台计算机的便捷用户界面-键入命令,按下发送按钮,等待一会儿,然后命令的输出将打印到您面前的纸上。

软件流控制起源于这个时代–例如,如果打印机不能像电传打字机接收数据那样快地打印,电传打字机可以向远端发送XOFF流控制命令(Ctrl+ S),说“立即停止发送” ,然后可以将XON流控制命令(Ctrl+ Q)发送到远端,说“我已经赶上了,请继续”。

而且这种用法在Unix中仍然存在,因为现代的终端仿真器正在仿真物理终端(例如vt100),而物理终端本身(以某种方式)是模拟电传打字机。


29
最有可能不是“打印到一张纸上”而是“打印到一叠扇形纸上”。
2014年

3
或打孔胶带!
mdpc

2
我不认为control-S和control-Q最初用于启动和停止计算机的输出,而是用于连接其他电传打字机的纸带阅读器。在分时系统问世之前,我认为将电传打字机连接到计算机不会引起太大兴趣。否则,计算机花在等待用户键入内容上的任何时间就是它在花时间做一些有用的事情上的时间。
2014年

2
或一卷8.5ʹʹ纸。
斯科特(Scott)

44
早在1987年,我就使大学中幸存的最后一个电传打字机大为火爆。将其用作串行打印机,但没有意识到如果连续打印35页,它会过热。过热只是难闻的气味,但随后纸张因热量着火了。他们才告诉我,我应该每两页给出Ctrl-S左右,让它冷却几分钟。
Tonny 2014年

25

从VT100端子和类似产品开始,它就是控制字符。从CTRL-S开始,这些终端上的滚动功能(如果有)是有限的,它使您可以冻结输出以查看当前屏幕上的内容而无需注销。

您在现代终端中看到的大多数内容都已放置到位,以模拟那些较旧的终端系统。


这就是我所听到的(而不是电传打印机的答案,尽管有可能(甚至是)这是保留了此类功能的原因。)当有或多或少的问题时,我已为此目的使用了Cntr-S
林登·怀特

2
开始/停止输出的机械需求是人类需要能够读取的!
TripeHound 2014年

@TripeHound:确实,很久以前,人们对接收到的信息会有特别的期望(有人急切地等待一个故事,有人可能会看着它被电传打字机收看,但操作员通常会感觉更好)去做)。
supercat

21

顺便说一句,如果您要在屏幕上列出很长的输出,则很有可能您的阅读速度不一定与吐出输出的计算机一样快。在猫(或活动尾巴)上使用CTRL-S / CTRL-Q对停止和恢复输出非常有用。


25
less更多。
dotancohen 2014年

2
@dotancohen:非常有趣。more直到第一个Unix 发布四到五年后(甚至没有发布)cat,Even 才被引入。还要注意,Unix 之前还有其他分时(交互)操作系统。例如,RSTScat -v
斯科特(Scott)

2
@dotancohen我更喜欢less,但人们说,虽然lessmoremost但仍然超过less
Volker Siegel 2014年

1
@VolkerSiegel:谢谢你给我介绍most!如果您知道某个程序可以让您在cli上的ssh上通过ssh看到图像文件(gif,jpg,png),那我将不胜感激。我目前使用的asciiview还是img2txt不满意。
dotancohen 2014年

2
@VolkerSiegel:也谢谢你!正如作者所说:“为什么要减价?”。Debian用户可以apt-get install most
mivk 2014年

17

在带有纸带阅读器的古老电传打字机上,接收到Control-Q将会打开纸带阅读器,并开始从纸带中发送字符,就像在键盘上打字一样。Control-S将关闭纸带阅读器。如果人们认为电传打字机最初不是要从计算机打印数据,而是要从其他电传打字机打印数据,那么应该很清楚地将“关闭纸带阅读器”解释为类似于“请求另一端停止传输”。

顺便说一句,control-R将打开纸带打孔器,这样电传打字机接收到的每个字符(或者,如果启用了本地回显,则在键盘上键入)也将被打到纸带上。Control-T将关闭纸带打孔器。但是,与与control-S和control-Q相关的操作不同,这些操作似乎没有现代的等效项。

另外,control-Q / R / S / T的原始名称为DC1 / DC2 / DC3 / DC4(“设备控制1”等)。虽然我不确定历史,但这样的命名可能暗示它们最初是旨在触发某种未指定的操作,但是人们对DC1和DC3所做的最普通的事情是控制纸带阅读器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.