xterm 终端中的颜色列表
Color listing in xterm terminal
我安装了一个最小的 debian,我试图自己设置一切,所以我试图通过给它一些颜色来调整我的默认终端 Xterm,经过一些研究我发现这可以通过编辑 .Xresources 文件,以便我可以使用 Hexa 代码 (#numbers) 或通过编辑 .bashrc 文件给出前 16 种颜色。
经过一些研究后,第二种解决方案似乎更动态,因为我可以通过扩展名指定文件的颜色,问题是网上的所有文章都使用非常奇怪的颜色代码:
.gz 01;31
.bz2 01;31
.deb 07;31
.rpm 01;31
.jar 01;31
我想知道是否有办法使用 RGB 代码颜色或六色,这样我可以更灵活地处理我的目录和文件列表。
抱歉,您不能使用 RGB 颜色代码(对于 HSV 或 HSL)。您可能会找到包含以下内容的文档:
$ man 5 dir_colors
AFAIK,不支持 RGB,终端仿真器仅限于显示一组有限的颜色(如果我没记错的话,一个具有 64 种前景和背景组合的调色板)。如果您关心易用性,您可以随时为预定义颜色声明多个变量,例如:
readonly BLACK_FONT_BLACK_BACKGROUND='30;40'
readonly BLACK_FONT_RED_BACKGROUND='30;41'
readonly BLACK_FONT_GREEN_BACKGROUND='30;42'
readonly BLACK_FONT_YELLOW_BACKGROUND='30;43'
...
readonly WHITE_FONT_CYAN_BACKGROUND='37;46'
readonly WHITE_FONT_WHITE_BACKGROUND='37;47'
以后像这样使用它们:
.gz $BLACK_FONT_YELLOW_BACKGROUND
以下是 table 前景和背景颜色代码:
Color Foreground Background
-------------------------------
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
magenta 35 45
cyan 36 46
white 37 47
-------------------------------
如果手动生成所有颜色名称变量太繁琐,您可以使用以下python脚本:
colors = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'];
index = 0
for x in ["{0}_FONT_{1}_BACKGROUND='{2};{3}'".format(colors[i].upper(), colors[j].upper(), i + 30, j + 40) for i in xrange(0, 8) for j in xrange(0, 8)]:
print x.ljust(38) + "#" + str(index)
index += 1
如 @Leonardo Fontenelle, the place to start reading about GNU ls
coloring is the dir_colors
手册页所述。使用的数字,例如 01;31
是与手册页中提到的 "ISO 6429 (ANSI) color sequences" 相关联的常量。实际上手册页比它应该的更晦涩:
- 常量是 ISO 6429 SGR 中使用的参数(设置图形再现)控制序列。实际标准非常详细(见ECMA-48)。
- 01 恰好是 bold 的标准代码(手册中使用以 Linux 为中心的“更亮的颜色*”)。
- 如 @higuaro 所述,代码 30-37 和 40-47 形成了一个 调色板;终端上随时显示的所有颜色都来自当前调色板。
- 更新
xterm
使用的调色板的方法不止一种; none 其中与 ls
配置直接相关,因为用于引用调色板的数字本身不包含颜色信息。
- 您可以使用 ncurses
tput
实用程序显示 colors 和 video 属性,例如 tput setaf 7
.
- 一些(相对)最近的
ls
配置使用 30-37 / 40-47 调色板之外的其他颜色代码,例如 aixterm
16 色功能,或 xterm
88 色或 256 色。 dir_colors
手册页没有提到这一点。
我安装了一个最小的 debian,我试图自己设置一切,所以我试图通过给它一些颜色来调整我的默认终端 Xterm,经过一些研究我发现这可以通过编辑 .Xresources 文件,以便我可以使用 Hexa 代码 (#numbers) 或通过编辑 .bashrc 文件给出前 16 种颜色。 经过一些研究后,第二种解决方案似乎更动态,因为我可以通过扩展名指定文件的颜色,问题是网上的所有文章都使用非常奇怪的颜色代码:
.gz 01;31
.bz2 01;31
.deb 07;31
.rpm 01;31
.jar 01;31
我想知道是否有办法使用 RGB 代码颜色或六色,这样我可以更灵活地处理我的目录和文件列表。
抱歉,您不能使用 RGB 颜色代码(对于 HSV 或 HSL)。您可能会找到包含以下内容的文档:
$ man 5 dir_colors
AFAIK,不支持 RGB,终端仿真器仅限于显示一组有限的颜色(如果我没记错的话,一个具有 64 种前景和背景组合的调色板)。如果您关心易用性,您可以随时为预定义颜色声明多个变量,例如:
readonly BLACK_FONT_BLACK_BACKGROUND='30;40'
readonly BLACK_FONT_RED_BACKGROUND='30;41'
readonly BLACK_FONT_GREEN_BACKGROUND='30;42'
readonly BLACK_FONT_YELLOW_BACKGROUND='30;43'
...
readonly WHITE_FONT_CYAN_BACKGROUND='37;46'
readonly WHITE_FONT_WHITE_BACKGROUND='37;47'
以后像这样使用它们:
.gz $BLACK_FONT_YELLOW_BACKGROUND
以下是 table 前景和背景颜色代码:
Color Foreground Background
-------------------------------
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
magenta 35 45
cyan 36 46
white 37 47
-------------------------------
如果手动生成所有颜色名称变量太繁琐,您可以使用以下python脚本:
colors = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'];
index = 0
for x in ["{0}_FONT_{1}_BACKGROUND='{2};{3}'".format(colors[i].upper(), colors[j].upper(), i + 30, j + 40) for i in xrange(0, 8) for j in xrange(0, 8)]:
print x.ljust(38) + "#" + str(index)
index += 1
如 @Leonardo Fontenelle, the place to start reading about GNU ls
coloring is the dir_colors
手册页所述。使用的数字,例如 01;31
是与手册页中提到的 "ISO 6429 (ANSI) color sequences" 相关联的常量。实际上手册页比它应该的更晦涩:
- 常量是 ISO 6429 SGR 中使用的参数(设置图形再现)控制序列。实际标准非常详细(见ECMA-48)。
- 01 恰好是 bold 的标准代码(手册中使用以 Linux 为中心的“更亮的颜色*”)。
- 如 @higuaro 所述,代码 30-37 和 40-47 形成了一个 调色板;终端上随时显示的所有颜色都来自当前调色板。
- 更新
xterm
使用的调色板的方法不止一种; none 其中与ls
配置直接相关,因为用于引用调色板的数字本身不包含颜色信息。 - 您可以使用 ncurses
tput
实用程序显示 colors 和 video 属性,例如tput setaf 7
. - 一些(相对)最近的
ls
配置使用 30-37 / 40-47 调色板之外的其他颜色代码,例如aixterm
16 色功能,或xterm
88 色或 256 色。dir_colors
手册页没有提到这一点。