使用 echo 打印彩色文本

M0ε*_*εiπ 25 scripting shell-script 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
Run Code Online (Sandbox Code Playgroud)

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

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

Ant*_*los 13

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

更具体地说[是'控制序列介绍器'

类型man console_codes几乎在任何* nix的发行看代码和一些文档。


小智 5

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

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

Closing = "\033[m" or "\e[0m"
Run Code Online (Sandbox Code Playgroud)

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


Bor*_*jaX 2

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

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

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

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

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