使用回显打印彩色文本


25

我知道使用回声(例如红色)打印彩色文本的代码是: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

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


通常,您会在当前技术环境中转义具有特殊含义的字符。例如,字符串通常写在引号内,例如“ like this”。但是,如果要在字符串中使用引号,则必须转义那些字符,以便将它们按字面意义进行解释,而不是作为分隔符。例如,echo "She said \"Hi\""对于这种情况(您的问题),您将不得不等待更好的答案。
伊曼纽尔·伯格

Answers:



4

具体来说,颜色代码定义如下-

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

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

因此,基本上,这只是不同终端解释颜色代码的方式,您可以在这些元素中为文本加标题。这是使终端了解您的意思的一种奇怪方法(例如HexCodes或Binary ..)


2

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

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

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

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

它们是转义码,用于在终端中设置颜色模式。只是当用常规字符打印时,它们看起来像那样。


2

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.