微调目录后缀的 LS_COLORS?

微调目录后缀的 LS_COLORS?

我可以自定义LS_COLORS.我不需要帮助自定义不同文件后缀的颜色。我想做的是配置特殊颜色某些目录,基于它们的后缀。

(例如,我想dir1/以标准目录颜色显示,但dir2.special-suffix/要以不同的颜色显示,这是我为名称以 . 结尾的目录设置的.special-suffix。)

我尝试使用标准*.«suffix»方法(与文件一起使用)来执行此操作,但没有成功。所有目录都以 指定的颜色显示di,并忽略任何后续*.«suffix»规则。

这可能吗?

答案1

可能不会,尽管这也可能让开发人员感到惊讶。这是摘录的评论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 */

相关内容