是"%{\ 033 [0m%}" (代码为零)将字体颜色重置为" tput setaf"还是要Xterm默认颜色?

时间:2018-01-26 17:57:25

标签: linux shell unix prompt ansi

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

但是什么是"默认"用于此?

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

1 个答案:

答案 0 :(得分:2)

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

  1. 终端(程序)的默认颜色。
  2. 另一个建议的选择不正确,因为tput setaf没有设置"默认颜色",而是一个"当前颜色"。 tput setaf的任何选择是否与终端的默认颜色相对应(最多)是特定于终端的,因为没有相关的标准单向或另一种。

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

    还有另一种可能的选择,即tput op(选择原始颜色对),在多个终端描述中用于发送 {{1} } SGR 39 。同样,这是终端特定的,它与 49 的关系不受任何标准的约束。那些碰巧使用相同的"默认颜色"对于xterm和Linux控制台,但是(阅读ECMA-48)标准没有给出关于"默认颜色"的详细程度。并且没有"视频属性"。

    进一步阅读: