【问题标题】:Does "%{\033[0m%}" (code zero) reset the font color to "tput setaf" or to Xterm default color?“%{\033[0m%}”(代码零)是否将字体颜色重置为“tput setaf”或 Xterm 默认颜色?
【发布时间】:2018-01-26 17:57:25
【问题描述】:

我知道您可以使用转义序列%{\033[0m%}(代码零)将提示的颜色改回“默认”颜色(通常在提示之后)。

但是用于此的“默认”是什么?

  1. 终端程序本身的默认颜色?
  2. 通过tput setaf $COLOR设置的默认颜色,假设您使用它来设置与终端默认颜色不同的字体颜色?
  3. 还有吗?

【问题讨论】:

  • 如果您在软件中硬编码 ANSI 代码,而不是让 tput 为您当前的终端查找正确的代码(可能符合也可能不符合 ANSI),那么您正在做错了。
  • @CharlesDuffy - 幸运的是,终端保证符合 ANSI 标准

标签: linux shell unix prompt ansi


【解决方案1】:

它依赖于终端,但就现有实践而言,它必须是前者:

  1. 终端(程序)的默认颜色。

另一个建议的选择不正确,因为tput setaf 没有设置“默认颜色”,而是设置了“当前颜色”。 tput setaf 的任何选择是否对应于终端的默认颜色(充其量)是特定于终端的,因为没有相关的标准。

ECMA 48 给出了 SGR 0 的简洁(一行)描述(这是问题中提到的),以及 SGR 30-37@987654327 @(通常用于 tput 将使用的终端描述的 setaf/setab 选项)。

还有另一种可能的选择,即tput op(选择原来的颜色对),在几个终端描述中用于发送SGR 3949。同样,这是特定于终端的,它与 SGR 0 的关系没有被任何标准涵盖。这些碰巧对 xterm 和 Linux 控制台使用相同的“默认颜色”,但是(阅读 ECMA-48)该标准没有给出关于“默认颜色”和“视频属性”缺失的详细程度。

进一步阅读:

【讨论】:

    猜你喜欢
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 2023-02-13
    • 2016-04-28
    • 2021-03-27
    相关资源
    最近更新 更多