好的,所以在这里
它指出
export COLOR_NC='\e[0m' # No Color
export COLOR_BLACK='\e[0;30m'
export COLOR_GRAY='\e[1;30m'
export COLOR_RED='\e[0;31m'
export COLOR_LIGHT_RED='\e[1;31m'
export COLOR_GREEN='\e[0;32m'
export COLOR_LIGHT_GREEN='\e[1;32m'
export COLOR_BROWN='\e[0;33m'
export COLOR_YELLOW='\e[1;33m'
export COLOR_BLUE='\e[0;34m'
export COLOR_LIGHT_BLUE='\e[1;34m'
export COLOR_PURPLE='\e[0;35m'
export COLOR_LIGHT_PURPLE='\e[1;35m'
export COLOR_CYAN='\e[0;36m'
export COLOR_LIGHT_CYAN='\e[1;36m'
export COLOR_LIGHT_GRAY='\e[0;37m'
export COLOR_WHITE='\e[1;37m'
我想知道这些值实际上是如何工作的,例如 和COLOR_GREEN
,COLOR_LIGHT_GREEN
它们只有一个字符不同,但从视觉上看它们的颜色和粗细都不同,一个是粗体,而另一个不是......有人愿意解释一下发生了什么吗在这?
答案1
从你引用的内容中\e[0m
脱颖而出;它重置属性。剩下的就是一个调色板16 种颜色。通常这些颜色与变量的描述性名称相符,但不一定如此。当您的终端获取这样那样的字节序列时,它开始使用关联的颜色。要点是关联的颜色可以是任何颜色,甚至可以是不止一种颜色的颜色。
例如,我可以配置我的终端模拟器 ( konsole
) 以使用任意颜色。这样我就可以让你的COLOR_GREEN
和COLOR_LIGHT_GREEN
在我的终端中分别显示为(例如)红色和蓝色。还可以选择以粗体字体绘制浓烈的颜色。
一般来说,终端仿真器获取字节序列并做出反应。所讨论的序列旨在选择颜色,但您可以创建一个播放声音的终端模拟器。
一些使用颜色的程序期望我的终端模拟器实际使用颜色,并且它们期望我的调色板与传统调色板类似;或者至少他们希望COLOR_LIGHT_foo
在视觉上成为COLOR_foo
.如果我使用非标准调色板或疯狂的终端仿真器使此类程序无法读取,那么这就是我的问题。以粗体绘制强烈的颜色通常会增加可读性,因此您观察到的是相当理智的设置的表现。
将有问题的颜色视为color1
、color2
等,甚至是request1
、request2
等。其余的取决于您的终端(终端模拟器)。