如何着色`ls`文件列表中的隐藏文件?

Joh*_*ney 10 ls colors filenames

LS_COLORS环境变量允许您为 GNU coreutil 的ls命令决定不同文件类型的颜色,例如目录、常规文件、链接等。我想点文件被认为是 Linux 文件类型的变体,而不是它自己的类型,因此有没有为它们指定显示颜色的选项。

是否有任何(其他)方法可以使ls列表以不同颜色显示隐藏文件?

Mic*_*Osl -1

如果您只想突出显示隐藏文件(和文件夹)并且不关心所有其他文件的颜色,那么显而易见的方法是运行ls -la | grep -E "^| \.[^/|'.].*"

如果您想保留其他颜色,那么事情就会开始变得棘手,因为它$LS_COLORS本身并不支持对隐藏文件进行着色,就像看起来一样。

我想出了一个想法,将当前目录的隐藏文件$LS_COLORS作为伪扩展动态附加到环境变量中,然后执行ls -la,然后运行dircolors以重置原始颜色模式。显然,如果隐藏文件与已知扩展名同名,就会产生冲突。此外,此方法不适用于隐藏文件夹。

警告:这个解决方案是一个(没有经过彻底测试的)黑客解决方案。需要您自担风险使用它。

for h in $(ls -A | grep "^\."); do LS_COLORS="$LS_COLORS*$h=04;05:"; done; ls -la; eval $(dircolors)