Como colorir arquivos ocultos nas listagens de arquivos 'ls'?

8
A variável

LS_COLORS environmental permite que você escolha cores para diferentes tipos de arquivo para o comando ls do GNU coreutil, como diretórios, arquivos regulares, links, etc. Suponho que os arquivos dot sejam considerados uma variação dos tipos de arquivos Linux. não é um tipo sozinho, portanto, não há opção para especificar uma cor de exibição para eles.

Existe alguma (outra) maneira de fazer com que ls listagens mostrem arquivos ocultos em cores diferentes?

    
por Johnny Baloney 23.09.2014 / 16:18

2 respostas

0

Se você está apenas classificando por nome, isso pode ajudar:

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$

No entanto, ele divide o comando ls em duas partes, uma para arquivos e pastas ocultos, uma para o restante.

    
por 07.09.2015 / 13:32
-1

Se você quiser apenas destacar arquivos ocultos (e pastas) e não se importar com a cor de todos os outros arquivos, a abordagem óbvia é executar ls -la | grep -E "^| \.[^/|'.].*"

Se você quiser manter as outras cores, as coisas começam a ficar complicadas, porque $LS_COLORS não oferece suporte nativo para colorir os arquivos ocultos como parece.

Eu tive a idéia de acrescentar dinamicamente os arquivos ocultos do diretório atual à variável de ambiente $LS_COLORS como uma pseudo-extensão, depois executar ls -la e depois disso executar dircolors para redefinir o esquema de cores original. Obviamente, haverá um conflito se um arquivo oculto tiver o mesmo nome de uma extensão conhecida. Além disso, esse método não funciona com pastas ocultas.

Aviso: esta solução é um hack (não totalmente testado). Use a seu próprio risco.

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

    
por 23.09.2014 / 18:16