有彩色 shell 输出的手册页吗?

有彩色 shell 输出的手册页吗?

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

echo -e "\e[34m Hello\n \e[0m"

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

答案1

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

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

    printf '%s\n' "$(tput setaf 4)Hello$(tput setaf 0)"
    
  • 一些来源,例如Bash 提示符 HOWTO高级 Bash 脚本指南提到颜色,但(即使是这些)通常也有差距和遗漏,对于 ECMA-48 没有帮助。

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

相关内容