我可以自定义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 */