我终端中的ASCII控制字符

💡 原文英文,约2100词,阅读约需8分钟。
📝

内容提要

本文探讨了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工具可以重新映射操作系统终端驱动的控制代码,并查看当前的映射。

🏷️

标签

➡️

继续阅读