![如何为“ls”文件列表中的隐藏文件着色?](https://linux22.com/image/56220/%E5%A6%82%E4%BD%95%E4%B8%BA%E2%80%9Cls%E2%80%9D%E6%96%87%E4%BB%B6%E5%88%97%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%9A%90%E8%97%8F%E6%96%87%E4%BB%B6%E7%9D%80%E8%89%B2%EF%BC%9F.png)
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 输出着色。试一试!!!一旦你习惯了它,就很难放弃使用它。
答案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)