我正在尝试设置LS_COLORS
为 ls 输出着色,但由于某种原因它忽略任何文件匹配模式。它正确地为可执行文件、目录等着色,但它似乎完全忽略了我的任何以 * 开头的文件匹配模式。
我知道字符串本身是正确的,因为我已经在另一台机器上尝试过它并且它按预期工作。fi
我还知道这些不会被像and这样的包罗万象的值覆盖,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:
知道这里会发生什么吗?
(对于遇到此问题的其他人来说,请仔细检查您正在查看的文件是否无法由您执行。如果是,那么它们都将在 $LS_COLORS 中指定为您的“ex”部分的颜色,而不是颜色与其扩展名相对应。)
事实证明这是操作员错误。我的测试目录中的所有文件都意外地设置为可执行文件,因此它们都被赋予了我分配给可执行文件的颜色(橙色)。当我手动从扩展名应根据 $LS_COLORS 的内容着色的文件中删除可执行位时,它按预期工作。