ls 使用 LS_COLORS 著色時忽略副檔名

ls 使用 LS_COLORS 著色時忽略副檔名

我試圖設定LS_COLORS為 ls 輸出著色,但由於某種原因它忽略任何文件匹配模式。它正確地為可執行檔、目錄等著色,但它似乎完全忽略了我的任何以 * 開頭的文件匹配模式。

我知道字串本身是正確的,因為我已經在另一台機器上嘗試過它並且它按預期工作。我還知道這些不會被像fiand這樣的包羅萬象的值覆蓋,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 的內容進行著色的擴展名的文件中手動刪除可執行位時,它按預期工作。

相關內容