Afficher ses fichiers TODO en couleur dans ls

Mettons un peu de couleur dans nos listings de fichiers

Afin de vous faire patienter avant la sortie d’autres articles cet été, je vous propose un petit hack rigolo qui va vous permettre de jouer avec les couleurs des fichiers affichés par la commande ls.

Les couleurs et la commande ls

Certaines distributions comme Ubuntu (ou terminaux avancés) affichent automatiquement lors de l’appel à ls (qui est souvent définit comme un alias ls="ls --color=auto") des couleurs différentes en fonction du type de fichier listé.

Cependant, le terminal que j’utilise (termite) ne propose pas de coloration par défaut, ce qui est un bon point car ça va nous permettre de tout modifier !

Utiliser un fichier dircolors

Le fichier ~/.dircolors est un fichier permettant de faire l’association entre des types de fichiers et leurs couleurs ; ainsi par exemple on peut faire s’afficher tous les dossiers en bleu et toutes les archives (*.tar, *.zip, …) en rouge.

Afin de générer un fichier ~/.dircolors par défaut qui contient déjà plein d’associations fichiers <-> couleurs, il vous faudra utiliser la commande suivante :

$ dircolors -p > ~/.dircolors

Puis ensuite y ajouter en haut un TERM xterm-termite si vous utilisez comme moi termite.

Pour charger le fichier dircolors à chaque session shell, il va falloir ajouter la ligne suivante dans votre shellrc (~/.zshrc ou ~/.bashrc) :

eval $(dircolors ~/.dircolors)

Relancez un terminal et tapez un ls, vos dossier devraient désormais apparaitre en bleu dans le listing !

Contenu du dircolors

Maintenant que l’on a un fichier dircolors qui fonctionne et qui est correctement appelé lors du lancement de terminaux, on peut le modifier pour s’amuser à ajouter des règles personnalisées.

Ouvrez le fichier ~/.dircolors dans votre éditeur favori. En l’explorant un peu, vous remarquerez la présence de beaucoup de lignes au format suivant :

.ext 00;36

Si on décompose cette ligne en deux, on a :

  • Le groupe de sélection qui permet de dire à quel type de fichier la règle de couleur va s’appliquer. On notera que le format .ext est un raccourci pour le sélecteur *.ext ; ainsi on peut matcher des noms de fichiers se terminant par ce que l’on veut.
  • Une liste d’attributs numériques qui sont des codes POSIX permettant d’ajouter des attributs d’apparence au type de fichier mentionné ; la liste des codes et leur signification est disponible dans man 5 dir_colors et vim propose même une prévisualisation colorée de ces codes.

Des fichiers TODO visibles

Une fois le format du fichier correctement appréhendé, on peut créer nos propres règles de coloration de fichier (la seule contrainte étant que l’on peut matcher uniquement la fin d’un fichier).

Voici donc une règle permettant d’afficher tous les fichiers textes TODO qui trainent un peu partout dans vos dossier en un noir sur fond jaune pétant afin de ne pas le louper :

# Custom TODO files
*TODO 30;43

Et voici ce que ça donne en image :

Le fichier TODO s’affiche en noir sur fond jaune

Le fichier TODO s’affiche en noir sur fond jaune

Conclusion

Plus d’excuses pour avoir oublié quoi faire sur un projet ; vous ne pourrez plus rater vos fichiers TODO dans vos dossiers ! N’hésitez par à utiliser cette astuce pour afficher d’autres fichiers aux noms reconnaissables d’une couleur plus visible.

Pour aller plus loin : man 5 dir_colors (Linux)

Une question ou remarque ? N'hésitez pas à me contacter en envoyant un mail à microjoe, suivi d'un arobase, puis encore microjoe et enfin un « point org ».