LS_COLORS 用于 256 色终端

BaR*_*Rud 7 ls colors terminal escape-characters

我认为 ls 颜色被定义为

<file_type>=[<bg(40-47)>];<font_spec(0:5)>;<font_color(30-37)>

但是,最近我发现这个地方有更多的颜色和颜色被指定为,例如:

.tar    00;38;5;61
Run Code Online (Sandbox Code Playgroud)

对于 256 色终端。

这个定义是什么意思?

Gil*_*il' 12

LS_COLORS指令的参数是作为转义序列的一部分写入终端的字符串。显示文件名时,ls写入\e[,然后是与文件类型关联的字符串,然后是m,然后是文件名,然后\e[0m(其中\e表示转义字符)。这是一个转义序列,它告诉 xterm 和兼容终端(现在是大多数)改变颜色和其他文本属性(在文档中。不关心字符序列的含义或它包含多少个分号。CSI Pm mls

旧终端仅支持8种前景颜色,由30到37,支持更多的颜色终端使用转义序列的数字指定,其中是彩色数,或其中PG是RGB值。这些可以与其他属性组合,例如或用于粗体蓝色文本。\e[38;5;Psm\e[38;2;Pr;Pg;Pbm\e38;5;61;1m\e38;2;95;95;175;1m