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 实用程序显示 colorsvideo 属性,例如 tput setaf 7 .
  • 一些(相对)最近的 ls 配置使用 30-37 / 40-47 调色板之外的其他颜色代码,例如 aixterm 16 色功能,或 xterm 88 色或 256 色。 dir_colors 手册页没有提到这一点。