但是,为什么Ctrl + S首先存在?通过将该控制序列放到原处试图解决什么问题?
#1 楼
在计算机出现很久之前,就有电传打字机(又称电传打字机,又称电传打字机)。可以将它们视为与电报机大致相同的技术,但是要附加某种类型的键盘和某种类型的打印机。时间到了房间大小,电传打字机变成了第一台计算机的便捷用户界面–键入命令,按下发送按钮,等待一会儿,命令的输出打印在您面前的纸上。软件流控制起源于这个时代–例如,如果打印机不能像电传打字机接收数据那样快地打印,电传打字机可以发送XOFF流控制命令(Ctrl + S)到远程方说“立即停止传输”,然后可以将XON流控制命令(Ctrl + Q)发送到远程方,说“我已经追上了,请继续”。
而且这种用法在Unix中仍然存在,因为现代的终端仿真器正在仿真物理终端(例如vt100)精灵们(以某种方式)正在模仿电传打字机。
评论
最有可能不是“打印到一张纸上”而是“打印到一叠扇形纸上”。
–杜布
14年6月18日在15:08
或打孔的打孔带!
–mdpc
14年6月18日在17:36
我不认为control-S和control-Q最初是用来启动和停止计算机输出的,而是从连接到其他电传打字机的纸带阅读器开始的。在分时系统问世之前,我认为将电传打字机连接到计算机不会引起太大兴趣。否则,计算机花在等待用户键入内容上的任何时间就是它在花费在做有用的事情上的时间。
–超级猫
2014年6月18日23:24
早在1987年,我使大学中幸存的最后一个电传打字机大为火爆。将其用作串行打印机,但没有意识到如果连续打印35页会过热。只是闻到过热的味道,但随后纸张因热量着火了。只有到那时,他们才告诉我我应该每两页给出Ctrl-S左右,使其冷却几分钟。
–Tonny
14年6月20日在21:36
这有助于解释为什么当您按CTRL + S时nano咕-咕umble。
–伊恩·塞缪尔·麦克莱恩·艾尔德(Iain Samuel McLean Elder)
14年6月22日在18:25
#2 楼
从VT100终端和类似产品开始,这就是控制字符。这些终端上的滚动功能(如果有的话)有限(以CTRL-S开头),使您可以冻结输出以查看屏幕上当前显示的内容而不会被注销。可以在现代终端中看到,以模拟那些较旧的终端系统。
评论
这就是我所听到的(而不是电传打印机的答案,尽管有可能(可能甚至是)这是保留了该功能的原因。)当有或多或少的问题时,我已为此目的使用了Cntr-S
–林登·怀特(Lyndon White)
14年6月20日在9:58
开始/停止输出的机械需求是人类需要能够阅读的!
– TripeHound
2014年6月20日12:14
@TripeHound:确实,很久以前,人们对接收到的信息会有特别的期望(有人急切地等待一个故事,有人可能会看着它被电传打字机收看,但操作员通常会有更好的东西去做)。
–超级猫
14年6月20日在16:56
#3 楼
顺便说一句,如果您要在屏幕上列出较长的输出,则很有可能您的阅读速度不一定与吐出输出的计算机一样快。在猫(或活动尾巴)上使用CTRL-S / CTRL-Q对停止和恢复输出非常有用。评论
少即是多。
– dotancohen
2014年6月19日下午5:46
@dotancohen:非常有趣。直到第一个Unix(具有cat特性,但没有cat -v特性)发布四到五年后,才引入更多功能。还要注意,Unix之前还有其他分时共享(交互式)操作系统。例如,RSTS。
–斯科特
2014年6月19日下午16:17
@dotancohen我更喜欢少一点,但人们说,虽然少即是多,但大多数仍然多于少!
– Volker Siegel
2014年6月20日在1:49
@VolkerSiegel:谢谢您向我介绍最多!如果您知道某个程序可以让您在cli上通过ssh通过ssh查看图像文件(gif,jpg,png),那我很想听听。我目前使用asciiview或img2txt,但都不令人满意。
– dotancohen
2014年6月20日15:46
@VolkerSiegel:也谢谢你!正如作者所说:“为什么要减价?”。 Debian用户可以最轻松地安装。
– mivk
14年6月22日在12:58
#4 楼
在带有纸带阅读器的古老电传打字机上,接收到Control-Q将会打开纸带阅读器,并开始从纸带中发送字符,就像在键盘上打字一样。 Control-S将关闭纸带阅读器。如果人们认为电传打字机最初不是要从计算机打印数据,而是要从其他电传打字机打印数据,那么应该很清楚如何将“关闭纸带阅读器”解释为类似于“请求另一端停止传输”。 br />偶然地,control-R会打开纸带打孔器,这样电传打字机接收到的每个字符(或者,如果启用了本地回显,则在键盘上键入)也将被打孔到纸上胶带; Control-T将关闭纸带打孔器。但是,与与control-S和control-Q相关的操作不同,这些操作似乎没有现代的等效项。
此外,control-Q / R / S / T的原始名称为DC1 / DC2 / DC3 / DC4(“设备控制1”等),虽然我不确定历史,但是这样的命名将表明它们最初是旨在触发某些未指定的操作,但是人们最常见的做法是DC1和DC3用于控制纸带阅读器。
评论
参见:linusakesson.net/programming/tty(阅读所有内容,尤其是有关流控制的部分...)已经使用Ctrl-S / Ctrl-Q多次保存了我的培根,以阻止错误消息在几乎没有功能的系统上的失控输出,这样我就可以看到它们是什么。
附带说明一下,我在.bashrc中有此功能可禁用这两个功能:stty stop'';动作开始'';。这使Ctrl-S可以免费用作屏幕的转义字符,而在我的.screenrc中是:^ Ss。反过来,这意味着我可以使用标准的readline快捷键Ctrl-A来表示“行开始”(与Ctrl-E表示“行尾”匹配,并且对终端仿真的脆弱性小于Home和End)。 :D