终端程序的潜规则

💡 原文中文,约1800字,阅读约需5分钟。
📝

内容提要

终端程序遵循一些规则,包括退出机制、输入编辑和输出规范。退出机制方面,非交互式程序用Ctrl-C退出,TUI程序用q退出,REPL程序在空行按Ctrl-D退出。输入编辑方面,大多数程序遵循readline快捷键,如Ctrl-W删除上一个词。输出规范上,程序通常不超过16种颜色,并在管道中禁用颜色。

🎯

关键要点

  • 终端程序的行为虽然没有正式标准,但出奇地一致。

  • 终端程序分为三类:非交互式程序、TUI程序和REPL程序,各类有不同的退出约定。

  • 非交互式程序使用Ctrl-C退出,TUI程序按q退出,REPL程序在空行按Ctrl-D退出。

  • 几乎所有终端程序遵循readline快捷键约定,支持Ctrl-W删除上一个词。

  • 终端程序的输出规范是使用不超过16种颜色,并在管道中禁用颜色。

🔎

延伸解读

终端程序的分类与退出机制

终端程序分为非交互式、TUI和REPL三类,各类程序的退出机制各有不同。了解这些规则有助于用户在使用不同类型的终端程序时,快速掌握如何退出,避免不必要的困扰。特别是在使用REPL时,空行按Ctrl-D退出的行为可能并不直观,用户需特别留意。

输入编辑的快捷键约定

几乎所有终端程序都遵循readline的快捷键约定,尤其是Ctrl-W删除上一个词的功能。这种一致性使得用户在不同程序间切换时,能够保持一定的操作习惯,提升效率。然而,某些程序如git和cat的编辑功能较为基础,用户在使用时需注意这些例外情况。

输出规范与颜色使用

终端程序通常限制使用不超过16种颜色,并在管道中禁用颜色,以避免与用户背景色冲突。这一规范确保了输出的可读性,但在需要保留颜色时,用户可以使用unbuffer等工具来强制实现。了解这些输出规范有助于用户在处理数据时,选择合适的工具和方法。

延伸问答

终端程序的退出机制有哪些不同类型?

终端程序分为三类:非交互式程序使用Ctrl-C退出,TUI程序按q退出,REPL程序在空行按Ctrl-D退出。

终端程序如何处理输入编辑?

几乎所有终端程序遵循readline快捷键约定,支持如Ctrl-W删除上一个词等快捷键。

终端程序的输出规范是什么?

终端程序的输出通常不超过16种颜色,并在管道中禁用颜色。

为什么终端程序在管道中禁用颜色?

大多数程序在输出到管道时关闭颜色和格式化,以避免与用户的背景色冲突。

如何强制终端程序在管道中保留颜色?

可以使用unbuffer命令或程序自带的参数来强制保留颜色。

终端程序的行为是否有正式标准?

终端程序的行为没有正式标准,但出奇地一致,遵循一些不成文的规则。

🏷️

标签

➡️

继续阅读