Shell
為目錄後綴微調 LS_COLORS?
我可以在
LS_COLORS
. 我不需要幫助自定義不同文件後綴的顏色。我想做的是根據它們的後綴 為某些目錄配置特殊顏色。(例如,我想
dir1/
以標準目錄顏色dir2.special-suffix/
顯示,但以不同顏色顯示,我為名稱以 . 結尾的目錄設置了這種顏色.special-suffix
。)我嘗試使用標準
*.«suffix»
方法(與文件一起使用)來做到這一點,但沒有運氣。所有目錄都以 為 指定的顏色顯示di
,並忽略任何後續*.«suffix»
規則。這甚至可能嗎?
可能不會,儘管這也可能讓開發人員感到驚訝。這是摘自GNU 的 ls.c 的評論:
# /* Extensions only apply to regular files, apparently. */
這是完整ls.c原始碼的連結,您會在其中找到相同的內容,儘管它可能不太好讀。
值得注意的是,儘管您可以根據目錄的模式和/或根據它們的連結狀態獲得一些顏色的交替。當然,這樣的事情就等於為了記者而改變報導的內容,但我不是哲學家;所以這是您可能的一種方法:
mkdir t_not_other_writable mkdir x_not_other_writable chmod o+t t_not_other_writable LS_COLORS='lc=:rc=:rs=:di=FG=BLD;CLR=BLUE :st=FG=REV;CLR=BLUE :' \ /usr/bin/ls --color=always -nFl
輸出
drwxr-xr-x 1 1000 1000 0 Aug 7 14:37 FG=BLD;CLR=BLUE x_not_other_writable/ drwxr-xr-t 1 1000 1000 0 Aug 7 14:36 FG=REV;CLR=BLUE t_not_other_writable/
為了確保這樣的事情不是一個可笑的危險想法,我與穀歌仔細檢查了粘性位的作用:
粘性位是在文件或目錄上設置的權限位,僅允許文件/目錄的所有者或 root 使用者刪除或重命名文件。沒有其他使用者被授予刪除其他使用者創建的文件的權限。
因此,如果我們談論的是您的目錄,而這些目錄不是您打算讓其他人首先刪除的東西,那麼可能不會造成任何傷害。
PS如果您對那裡的定義感到好奇,我在這裡
$LS_COLORS
很好地介紹了它*(我希望)* 。我還從下面的原始碼中粘貼了更多評論,我希望您會發現這些評論與將為您提供的輸出很好地對齊*(對於那些它也很難定義的評論)*:dircolors -p
# /* lc: Left of color sequence */ # /* rc: Right of color sequence */ # /* ec: End color (replaces lc+no+rc) */ # /* rs: Reset to ordinary colors */ # /* no: Normal */ # /* fi: File: default */ # /* di: Directory: bright blue */ # /* ln: Symlink: bright cyan */ # /* pi: Pipe: yellow/brown */ # /* so: Socket: bright magenta */ # /* bd: Block device: bright yellow */ # /* cd: Char device: bright yellow */ # /* mi: Missing file: undefined */ # /* or: Orphaned symlink: undefined */ # /* ex: Executable: bright green */ # /* do: Door: bright magenta */ # /* su: setuid: white on red */ # /* sg: setgid: black on yellow */ # /* st: sticky: black on blue */ # /* ow: other-writable: blue on green */ # /* tw: ow w/ sticky: black on green */ # /* ca: black on red */ # /* mh: disabled by default */ # /* cl: clear to end of line */