如何为“ls”文件列表中的隐藏文件着色?

如何为“ls”文件列表中的隐藏文件着色?

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

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

答案1

如果您仅按名称排序,这可能会有所帮助:

alias ll='LS_COLORS=$LS_COLORS:"di=0;34:" ; S_COLORS=$LS_COLORS:"fi=0;37:" ; export LS_COLORS; ls -dHhl --color=auto .*; LS_COLORS=$LS_COLORS:"di=1;94:" ; LS_COLORS=$LS_COLORS:"fi=1;37:" ; export LS_COLORS$

但是,它将 ls 命令分为两部分,一部分用于隐藏文件和文件夹,另一部分用于其余部分。

答案2

是的,使用cf.我刚刚发布了一个记录良好的版本,它专门为每个文件扩展名和/或某些特殊属性(可执行文件、链接、隐藏和目录)的 ls 输出着色。试一试!!!一旦你习惯了它,就很难放弃使用它。

https://github.com/AdamDanischewski/cf

答案3

如果您只想突出显示隐藏文件(和文件夹)并且不关心所有其他文件的颜色,那么显而易见的方法是运行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)

相关内容