为目录后缀微调 LS_COLORS?

Zea*_*rin 5 ls shell colors directory

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

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

我尝试使用标准*.«suffix»方法(与文件一起使用)来做到这一点,但没有运气。所有目录都以为 指定的颜色显示di,并忽略任何后续*.«suffix»规则。

这甚至可能吗?

mik*_*erv 6

可能不会,尽管这也可能让开发人员感到惊讶。这是摘自GNU 的 ls.c 的评论:

#   /* Extensions only apply to regular files, apparently. */
Run Code Online (Sandbox Code Playgroud)

这是一个指向完整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
Run Code Online (Sandbox Code Playgroud)

输出

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/
Run Code Online (Sandbox Code Playgroud)

为了确保这样的事情不是一个荒谬危险的想法,我确实与谷歌仔细检查了粘性位的作用:

粘滞位是在文件或目录上设置的权限位,仅允许文件/目录的所有者或 root 用户删除或重命名文件。没有其他用户被授予删除其他用户创建的文件的权限。

因此,如果我们谈论的是您的目录,而这些目录并不是您一开始就打算允许其他人删除的,那么可能不会造成任何伤害。

PS 如果您对$LS_COLORS那里的定义感到好奇,我在这里已经很好地(我希望) 介绍了它。我还粘贴了来自以下来源的更多评论,我希望您会发现 align 与输出将为您提供的非常好(对于那些麻烦也定义的内容,即):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 */
Run Code Online (Sandbox Code Playgroud)