Shell coloré

De Diablotins.org.

(Redirigé depuis Shell coloré)


Coloration contextuelle Shell
Image:brush.png

Souvent on veut colorer le ls(1) de FreeBSD, alors on essaie :

$ alias ls='ls --color'

Hélas, ça ne marche pas ...
La commande ls de FreeBSD, n'est pas la commande GNU. On vois bien une solution pointer son nez :

$ alias ls='ls -G'

Comme nous dit le manuel. Mais ce dernier nous dit mieux que ça !




On peut y lire l'existence de trois variables d'environnement :

  • CLICOLOR : cette variable est un booléen qui sert à la même chose que le -G de notre alias. il active la coloration sur ls.
  • CLICOLOR_FORCE : cette variable est aussi un booléen, mais cette fois-ci, si elle est à “enable”, cette variable implique la coloration dans tout les cas même en mode non interactif. La coloration fait appel au caractères d'échappements, et donc je vous déconseille ce mode car sinon, dans vos scripts en piping de sortie de ls, vous aurez de drôles de surprises.
  • LSCOLORS : c'est ici que ça devient intéressant !:)

on peu configurer les couleurs en liste 'fb', “foreground/background”.
les couleurs sont :

  • a noir
  • b rouge
  • c vert
  • d marron
  • e blue
  • f magenta
  • g cyan
  • h gris clair
  • x couleur par défaut du shell pour le foreground et le background

Les majuscules en foreground mettent en gras. On a affaire ici aux couleurs standards ANSI.
L'affichage dépend tout de même des capacités du mode d'affichage dans lequel on est.
xterm ou xterm-color pour X sont très corrects et cons25 sous console.

L'ordre de la séquence pour la liste est :

  1. répertoire
  2. lien symbolique
  3. socket
  4. tube
  5. exécutable
  6. bloc spécial
  7. caractère spécial
  8. exécutable avec bit setuid
  9. exécutable avec bit setgid
  10. répertoire en sticky bit, en écriture pour tout le monde
  11. répertoire en écriture pour tout le monde, sans sticky bit

On peut donc avoir dans le fichier de configuration de son shell (.bashrc,.zshrc,.cshrc, ...).

  export CLICOLOR=enable
  export LSCOLORS='cxgxhxhxbxhxhxbabacaca'
Projets :