使用 LS_COLORS 着色时,ls 忽略扩展

使用 LS_COLORS 着色时,ls 忽略扩展

我尝试设置LS_COLORS对 ls 输出进​​行着色,但出于某种原因,它忽略了所有文件匹配模式。它正确地为可执行文件、目录等着色,但似乎完全忽略了以 * 开头的所有文件匹配模式。

我知道字符串本身是正确的,因为我已经在另一台机器上尝试过,并且它按预期工作。我还知道这些不会被像fi和这样的全能值覆盖,di因为当我删除LS_COLORS字符串的这些部分时,我根本没有得到任何彩色输出。我已经确认我使用的是 GNU ls,而不是其他类型的 ls。

字符串本身很长,但这是我为测试而创建的截断版本(它与我的真实版本相同LS_COLORS,我只是从字符串开头删除了大约 200 个扩展):

*.war=38;5;215:*.wav=38;5;136;1:*.webloc=38;5;116:*.webm=38;5;115:*.webp=38;5;97:*.wma=38;5;137;1:*.wmv=38;5;114:*.woff=38;5;66:*.woff2=38;5;66:*.wrl=38;5;216:*.wv=38;5;136;1:*.wvc=38;5;136;1:*.xcconfig=1:*.xcf=38;5;7:*.xcsettings=1:*.xcuserstate=1:*.xcworkspacedata=1:*.xib=38;5;208:*.xla=38;5;76:*.xln=38;5;7:*.xls=38;5;112:*.xlsx=38;5;112:*.xlsxm=38;5;112;4:*.xltm=38;5;73;4:*.xltx=38;5;73:*.xml=38;5;178:*.xpi=38;5;215:*.xpm=38;5;97:*.xsd=38;5;178:*.xsh=38;5;41:*.yaml=38;5;178:*.yml=38;5;178:*.z[0-9]{0,2}=38;5;239:*.zcompdump=38;5;241:*.zig=38;5;81:*.zlogin=1:*.zlogout=1:*.zprofile=1:*.zsh=38;5;172:*.zshenv=1:*.zwc=38;5;241:*.zx[0-9]{0,2}=38;5;239:bd=38;5;68:ca=38;5;17:cd=38;5;113;1:di=38;5;30:do=38;5;127:ex=38;5;208;1:pi=38;5;126:fi=0:ln=target:mh=38;5;222;1:no=0:or=48;5;196;38;5;232;1:ow=38;5;220;1:sg=48;5;3;38;5;0:su=38;5;220;1;3;100;1:so=38;5;197:st=38;5;86;48;5;234:tw=48;5;235;38;5;139;3:

知道这里可能发生什么事吗?

答案1

(对于遇到此问题的任何人来说,请仔细检查您正在查看的文件是否不可由您执行。如果可以,那么它们都将被赋予 $LS_COLORS 中“ex”部分的颜色,而不是与其扩展名相对应的颜色。)

原来这是操作员错误。我的测试目录中的所有文件都意外地被设置为可执行文件,因此它们都被赋予了我分配给可执行文件的颜色(橙色)。当我手动从扩展名应根据 $LS_COLORS 的内容着色的文件中删除可执行位时,它按预期工作。

相关内容