ls 的自定义颜色正确应用于某些类别,但忽略其他类别

ls 的自定义颜色正确应用于某些类别,但忽略其他类别

在 的帮助下dircolors,我改变了ls颜色。我的.dircolors文件是

FILE                   00;97
DIR                    00;96
LINK                   00;95
MULTIHARDLINK          00;34
ORPHAN                 91;01  # symlink to nonexistent file
MISSING                00;00 
EXEC                   91;00  # this is for files with execute permission

之后dircolors .dircolors >> .bashrcls根据设置的定义正确为其输出着色,除了可执行文件。它们使用默认的终端前景色而不是红色 (91;00) 进行着色。例如,

xterm -fg yellow # Executables become yellow on ls
xterm -fg green  # Executables become green on ls

这与终端(Xterm、终结者、虚拟控制台...)无关。

我还尝试了仅包含该行的 dircolors 文件EXEC,生成了该行

export LS_COLORS='ex=91;00:'

在我的中.bashrc,但可执行文件仍然没有颜色。

我在为可执行文件着色时做错了什么?

答案1

ls将这些设置视为要发送到终端的字符串。它不知道它们的意思。它发送ESC [ m 细绳 ;到终端,由终端来解释这个转义序列。

终端转义序列的事实标准是xterm。在该文件中,CSI意味着ESC [PS是一个整数并且下午是一个以分号分隔的整数列表,因此相关的转义序列列在下面CSI Pm m

终端按顺序应用参数。参数 0 重置包括颜色在内的所有属性。所以91;00相当于0, 使用91代替(或者0;91如果你想重置所有属性然后设置前景色)。91;01等价于,01;91因为前景色和强度是独立的属性。

ls通常从默认属性开始,并在每个颜色名称末尾重置为默认属性,因此00;在这些设置中是多余的。

相关内容