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


10

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

您是否可以通过其他任何方式使ls列表显示不同颜色的隐藏文件?


这个答案比您想知道的要多LS_COLORS。我不知道如何使它适用于点文件,但您可能想检查一下。
terdon

1
@terdon-它不适用于点文件。可能有一些,但很少。扩展名的长度有限制,大多数完整文件名都将超过该扩展名。它适用*.hide于例如命名文件。此答案针对目录解决了类似的问题,尽管对此的答案与目录问题可能并不相同。
mikeserv 2014年

Answers:


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命令分为两部分,一部分用于隐藏的文件和文件夹,另一部分用于其余部分。


0

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

https://github.com/AdamDanischewski/cf


-1

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

如果您要保持其他颜色,那么事情就会变得棘手,因为$LS_COLORS它本身并不支持对隐藏文件进行着色。

我想到了将当前目录的隐藏文件$LS_COLORS作为伪扩展名动态添加到环境变量中的想法,然后执行ls -la并在运行之后dircolors重置原始颜色模式。如果隐藏文件的名称与已知扩展名相同,则显然会有冲突。同样,此方法不适用于隐藏文件夹。

警告:此解决方案是一个(未经充分测试的)hack。需要您自担风险使用它。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.