使用 echo 打印彩色文本

使用 echo 打印彩色文本

我知道,要使用 echo 打印彩色文本,例如红色,代码是:echo -e "\e[1;31m This is red text \e[0m"
我知道在这个例子中,31 是红色代码,其他颜色的数量是:

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

对于背景颜色,数字是 40 到 47

我的问题是:\eand[m(31 之后)在这里到底意味着什么?
我在手册页中读到 \e 是转义,但我不明白它的含义。

答案1

它们是“序列元素”的一部分ANSI 转义序列也称为ECMA-48CSI 序列最初于 1976 年采用

更具体地说[是'控制序列引入器'

类型man console_codes几乎在任何 *nix 发行版中都可以查看代码和一些文档。

答案2

准确地说,颜色代码定义如下-

Opening
RED= "\033[31m" or "\e[1;31m"
CYAN="\033[36m" or "\e[1;31m"

Closing = "\033[m" or "\e[0m"

所以基本上这只是不同终端解释颜色代码以及在这些元素中为文本添加标题的方式。这是一种让终端理解你的意思的奇怪方式(比如十六进制或二进制......)

答案3

我找到了一个很好的解释这里(至少,对我来说很好:-))。我不确定它对你是否有用。

首先,在控制台上输入以下内容:

echo "^[[0;31;40mIn Color"

第一个字符是转义字符,它看起来像两个字符,^ 和 [。为了能够打印此内容,您必须按 CTRL+V,然后按 ESC 键。所有其他字符都是普通的可打印字符,因此您会看到红色的字符串 In Color。该类型将保持该颜色,直到您通过输入以下内容恢复:

它们是用于在终端中设置颜色模式的转义码。只是用普通字符打印出来的时候就是这样的。

答案4

\e是 Escape 字符的简写。 the<ESC>[和 them是 ANSI 颜色控制序列的开始和结束标记,它们是 ANSI 终端控制序列的子集。大多数以 开头<ESC>[,后跟一个数字,再后跟一个字母,指示正在实现哪个功能(例如,将光标移动到行;清除到行尾;将光标返回到保存的位置,等等)。

相关内容