您现在的位置是:首页 > 文章详情

终端程序遵循的“规则”

日期:2024-12-13点击:113

《"Rules" that terminal programs follow》这篇博客探讨了终端程序运行时遵循的一系列 “规则”,这些规则并非官方标准,而是基于作者多年使用终端的经验总结出来的行为准则。

文章首先指出,终端中运行的程序行为是由操作系统、shell、终端仿真器和正在运行的程序共同决定的。虽然前三者有明确的标准和交互方式,但正在运行的程序似乎可以做任何事情,这让人难以预测其行为。作者列举了一系列根据自己的经验总结的 “规则”,以帮助理解和预测终端程序的行为。

  1. 非交互式程序应在按下 Ctrl-C 时退出。这是因为非交互式程序通常会响应 SIGINT 信号而退出。但对于交互式程序,如 python3bcless,按下 Ctrl-C 可能只是中断当前操作,而不是退出程序。

  2. 按下 q 时 TUI 程序应退出。例如 less 或 htop 这样的程序,按下 q 会退出。但这条规则不适用于所有程序,如 tmux

  3. 按下 Ctrl-D 时 REPL 应该退出。这是因为按下 Ctrl-D 会触发 EOF(文件结束),通常在按下空行时退出。但有例外,如 Erlang REPL 不会在按下 Ctrl-D 时退出。

  4. 不要使用超过 16 种颜色。终端程序通常使用基本的 16 种 ANSI 颜色,以避免与用户的背景颜色发生冲突。文本编辑器如 Helix 可能会违反这条规则,使用自定义配色方案。

  5. 程序应该模糊地支持 readline 键绑定。大多数程序支持 readline 的键绑定,如 Ctrl-E 移动到行末。但有些程序,尤其是文本编辑器,会有自己的键绑定和编辑方法。

  6. 写入管道时禁用颜色。大多数程序在输出到管道或文件时会关闭颜色,以保持输出的纯文本格式。但可以通过一些方法强制程序使用颜色,例如使用 unbuffer 或 --color=always 标志。

  7. - 表示 stdin/stdout。程序通常会将 - 作为标准输入输出的标识,从 stdin 读取或写入到 stdout。

作者强调,这些 “规则” 并非绝对的,存在很多例外。了解这些规则有助于更好地理解和使用终端程序。博客详情可以查看:https://jvns.ca/blog/2024/11/26/terminal-rules


更多独家技术见解与热门话题讨论,尽在【开源中国 APP】,与数百万开发者一起,随时随地探索技术无限可能。

原文链接:https://www.oschina.net/news/324774/terminal-rules
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章