我终端中的ASCII控制字符
内容提要
本文探讨了33个终端控制代码,如Ctrl-A和Ctrl-C,分为操作系统处理和应用程序处理两类。文章回顾了这些代码的历史、使用方式及在不同模式下的表现,并强调在编写终端应用时应避免使用某些快捷键。作者提供了一个Python脚本用于识别控制代码,指出这些知识虽有趣但并非必需。
关键要点
-
本文探讨了33个终端控制代码,如Ctrl-A和Ctrl-C,分为操作系统处理和应用程序处理两类。
-
文章回顾了这些控制代码的历史、使用方式及在不同模式下的表现。
-
作者强调在编写终端应用时应避免使用某些快捷键,如Ctrl-I和Ctrl-M。
-
提供了一个Python脚本用于识别控制代码,指出这些知识虽有趣但并非必需。
-
控制代码分为操作系统处理和应用程序处理,操作系统处理的代码会发送信号给当前程序。
-
文章指出,只有33个控制代码,且某些组合键在终端应用中并无实际意义。
-
ASCII控制代码的名称与其在现代系统中的功能关系不大,很多名称已不再适用。
-
在规范模式和非规范模式下,某些控制代码的处理方式不同。
-
作者提到可以使用stty工具重新映射操作系统终端驱动的代码。
-
不同程序可能会对相同的控制代码有不同的处理方式,导致冲突。
-
关于Backspace键的处理存在历史争议,不同系统可能有不同的配置。
-
作者认为这些知识虽然有趣,但并非使用终端的必要条件。
延伸问答
终端控制代码有哪些分类?
终端控制代码分为操作系统处理和应用程序处理两类。
为什么在编写终端应用时应避免使用Ctrl-I和Ctrl-M?
因为Ctrl-I和Ctrl-M分别与Tab和Enter相同,使用它们作为快捷键会造成混淆。
如何识别终端发送的控制代码?
可以使用一个Python脚本来识别控制代码,作者提供了一个名为echo-key.py的示例。
ASCII控制代码的历史背景是什么?
这些控制代码最初是为电报机定义的,许多名称与现代系统中的功能关系不大。
在规范模式和非规范模式下,控制代码的处理有什么不同?
在规范模式下,输入仅在按下Enter时被程序接收,而在非规范模式下,输入会立即被程序接收。
使用stty工具可以做什么?
stty工具可以重新映射操作系统终端驱动的控制代码,并查看当前的映射。