Comment coloriser les fichiers cachés dans les listes de fichiers `ls`?

10

LS_COLORSLa variable d'environnement vous permet de décider des couleurs pour différents types de fichiers pour la lscommande GNU coreutil , tels que les répertoires, les fichiers réguliers, les liens, etc. Je suppose que les fichiers de points sont considérés comme une variation des types de fichiers Linux et non comme un type en soi aucune option pour spécifier une couleur d'affichage pour eux.

Existe-t-il un (autre) moyen de faire en sorte que les lslistes affichent des fichiers cachés dans une couleur différente?

Johnny Baloney
la source
Cette réponse a plus que jamais voulu en savoir LS_COLORS. Je ne pouvais pas comprendre comment le faire fonctionner pour les fichiers dot, mais vous voudrez peut-être le vérifier.
terdon
1
@terdon - cela ne fonctionne pas pour les fichiers dot. Cela pourrait l'être pour certains, mais très peu. Il y a une limite à la longueur d'une extension et la plupart des noms de fichiers entiers la dépasseront. Cela fonctionnera pour les fichiers nommés *.hidepar exemple. Cette réponse résout un problème similaire pour les répertoires, bien que les réponses à cela et le problème de répertoire ne soient probablement pas les mêmes.
mikeserv

Réponses:

1

Si vous triez uniquement par nom, cela pourrait aider:

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$

Cependant, il divise la commande ls en deux parties, une pour les fichiers et dossiers cachés, une pour le reste.

maladroit
la source
0

Oui, utilisez cf. Je viens de publier une version bien documentée, elle colore spécifiquement la sortie ls par extension de fichier et / ou certains attributs spéciaux (exécutable, liens, cachés et répertoires). Donner un coup de feu!!! Il est difficile de renoncer à l'utiliser une fois que vous vous y êtes habitué.

https://github.com/AdamDanischewski/cf

A.Danischewski
la source
-1

Si vous souhaitez simplement mettre en évidence les fichiers (et dossiers) cachés et que vous ne vous souciez pas de la coloration de tous les autres fichiers, l'approche évidente consiste à exécuter ls -la | grep -E "^| \.[^/|'.].*"

Si vous souhaitez conserver les autres couleurs, les choses commencent à devenir délicates, car $LS_COLORSne prend pas en charge la coloration des fichiers cachés en mode natif.

J'ai eu l'idée d'ajouter dynamiquement les fichiers cachés du répertoire actuel à la $LS_COLORSvariable d'environnement en tant que pseudo extension, puis d'exécuter ls -laet , ensuite, d'exécuter dircolorspour réinitialiser le schéma de couleurs d'origine. Il y aura évidemment un conflit si un fichier caché a le même nom qu'une extension connue. De plus, cette méthode ne fonctionne pas avec les dossiers cachés.

Attention: Cette solution est un hack (pas très testé). Utilisez à vos risques et périls.

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

Michael Osl
la source