是否有彩色外壳输出的手册页?

Ser*_*ius 24 colors terminal documentation

您知道,由特殊字符序列生成的彩色输出,例如:

echo -e "\e[34m Hello\n \e[0m"
Run Code Online (Sandbox Code Playgroud)

这将产生蓝色的单词“Hello”。为此,我不得不在网上搜索,这很难,因为不同的来源可能会说不同的内容。我想,一定有一些手册,但我找不到。即使有apropos color或类似的东西。所以,问题是 - 我在哪里可以找到可靠的手册?

Tho*_*key 27

信息来源太多,无法在此页面中列出:

  • 该命令echo -e使用扩展名呈现\e为 ASCII 27(八进制 33 或“\033”)。打印这些用途的便携方式printf(POSIX)。与标准echo(POSIX)进行比较。
  • 您的示例可以重写为

    printf "\033[34m Hello\n \033[0m"

  • 颜色转义的标准是ECMA-48(编码字符集的控制功能)。
  • 在 ECMA-48 中,8.3.117 SGR - SELECT GRAPHIC RENDITION 列出了用于设置 8 种前景色和 8 种背景色的控制序列。
  • 它还列出了代码 39/49“默认显示颜色(实现定义)”和 38/48“保留用于未来标准化;用于设置 ISO 8613-6 [CCITT 建议 T.416] 中指定的字符前景色”。也就是说,有另一个组织的建议,但它没有(到目前为止,24 年后)成为标准的一部分。
  • 仔细阅读,您可能会注意到该标准在很多地方都很模糊,允许有不同的解释。它描述了这些控制序列的语法,但没有描述它们的行为。为此,您必须转到相应终端的文档。
  • xterm 的文档可在XTerm Control Sequences 中找到,它假定您熟悉http://vt100.net上的 DEC 文档
  • 对于其他终端,他们的手册页可能会枚举控件(就像在console_codes 中为 Linux 控制台所做的那样)。
  • 其他终端将自己记录为“xterm”;有关讨论,请参阅 xterm 常见问题解答通过计数控件比较版本。幸运的是,颜色控件大多是兼容的(但请参阅 ncurses 常见问题解答我的终端显示一些未着色的空间)。
  • 您还可以阅读 的手册页tput,它允许您terminfo在 shell 脚本中使用功能。你的例子可以改写为

    printf '%s\n' "$(tput setaf 4)Hello$(tput setaf 0)"
    
    Run Code Online (Sandbox Code Playgroud)
  • 一些来源,如Bash Prompt HOWTOAdvanced Bash-Scripting Guide提到了颜色,但(即使是这些)作为一项规则也有漏洞和遗漏,并且对 ECMA-48 没有帮助。

  • 您可以通过网络搜索副本从其他来源(例如引用的来源)等中找到大多数其他来源,并且通常很少关注实际标准。

  • 这真的是很棒的答案——希望所有的答案都像你的一样 (2认同)