ls 和 exa 的配色方案

ls 使用的是 LSCOLORS 环境变量,exa 使用的是 LS_COLORS 环境变量,它们的格式是不同的。

export LSCOLORS=GxFxcxdxcxegedCxCxacad
export LS_COLORS="di=1;36:ln=35;;01:so=32:pi=33:ex=32:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43"

LS_COLORS 的比较好理解,用的是 ANSI 颜色代码;而 LSCOLORS 的就比较抽象了,根据 man ls 获得的资料显示,它们代表的意义如下:

The color designators are as follows:

a black
b red
c green
d brown
e blue
f magenta
g cyan
h light grey
A bold black, usually shows up as dark grey
B bold red
C bold green
D bold brown, usually shows up as yellow
E bold blue
F bold magenta
G bold cyan
H bold light grey; looks like bright white
x default foreground or background

Note that the above are standard ANSI colors. The actual display may differ depending on the color capabilities of the terminal in use.

The order of the attributes are as follows:

1. directory
2. symbolic link
3. socket
4. pipe
5. executable
6. block special
7. character special
8. executable with setuid bit set
9. executable with setgid bit set
10. directory writable to others, with sticky bit
11. directory writable to others, without sticky bit

LSCOLORS=GxFxcxdxcxegedCxCxacad每两位表示一个属性的颜色。
LS_COLORS 的属性颜色定义用冒号(:)分割,每个属性的颜色 分成三个部分,用分号(;)分割:前景色;背景色;特殊效果。属性的名称可以参考 exa网站

BTW,具体显示什么颜色,还是由终端模拟器来控制的。我们都喜欢使用深色的背景,但是深色背景下蓝色基本上不可见,所以都会调成其他的颜色。