Le ls en couleur
 Thorbjoern Ravn Andersen ([email protected])
 version   francaise  :  Pierre  Vassellerie  (Pierre.Vassel-
 [email protected])
 v1.0f2, 14 Octobre 1995

 La commande ls livree dans la distribution Slackware de  Linux  permet
 un  affichage  en  couleur  (Slackware 2.0.2 et noyau 1.1.54 de Linux.
 Ceci marche aussi bien avec agetty, qu'avec mgetty_ps).   Il  se  peut
 que  les  couleurs  par defaut ne vous plaisent pas et que vous prenne
 l'envie de les trifouiller.  Ce document a pour  unique  but  de  vous
 expliquer  le  principe  de  fonctionnement  et  la  configuration des
 couleurs utilises par cette commande.

 11..  CCoommmmeenntt sseelleeccttiioonnnneerr lleess ccoouulleeuurrss ??

 Il existe deux methodes :

 1. Premiere methode  :  utiliser  le  programme  _s_e_t_t_e_r_m  qui  s'avere
    parfait  pour une modification rapide et simple de la configuration
    par  defaut.  Les  manuels  et  aides  de   cette   commande   sont
    relativement  enigmatiques  et je ne tenterais en aucune maniere de
    vous les rendre plus clairs ;-).

    Les selections sont realisees par :

            setterm -foreground black -background white -store

 ou _-_s_t_o_r_e signifie que cette configuration  est  a  enregistrer  comme
 configuration  par  defaut  pour  la  console courante. Il vous faudra
 recommencer cette operation pour chaque nouvelle console virtuelle, et
 il  semble  alors une excellente idee de placer cette ligne dans votre
 .login (en csh ou tcsh) ou votre .profile (en sh, ksh ou bash).   Vous
 en connaissez desormais autant que moi sur la commande _s_e_t_t_e_r_m :-).

 2. Deuxieme  methode  :  Linux utilise les codes d'echappement ANSI du
    style

      ESC [ <parametres> m

 ou ESC est le caractere ASCII 27 et _p_a_r_a_m_e_t_r_e_s est aucun ou  plusieurs
 nombres separes par des points-virgules. Par exemple :

   "\033[41;33;1m" qui donne un affichage jaune sur fond rouge
   "\033[30;47m"   qui donne un affichage blanc sur fond noir
   "\033[m"        qui retablit l'affichage par defaut

 Ces  exemples  necessitent un shell reconnaissant les constructions du
 type \xxx. Si ce n'est pas le cas, inserez  directement  un  caractere
 d'echappement  directement  dans  la chaine. Sous bash/vi tapez Ctrl-V
 ESC, et sous tcsh/emacs tapez Ctrl-Q ESC.

 22..  QQuueelllleess ccoommbbiinnaaiissoonnss ddee ccoouulleeuurrss ssoonntt ppoossssiibblleess ??

 Ceci est un script  en  C-shell  faisant  apparaitre  sur  la  console
 l'ensemble des combinaisons de couleurs :

 ______________________________________________________________________
 #!/bin/csh
 #
 # Affiche les couleurs ANSI
 #
 set esc="\033["
 foreach fore (30 31 32 33 34 35 36 37)
   set line1="\*(dRfore  " line2="    "
   foreach back (40 41 42 43 44 45 46 47)
     set line1="\*(dR{line1}\*(dR{esc}\*(dR{back};\*(dR{fore}m Normal  \*(dR{esc}0m"
     set line2="\*(dR{line2}\*(dR{esc}\*(dR{back};\*(dR{fore};1m \*(dR{back} Bold \*(dR{esc}0m"
   end
   echo "\*(dRline1\n\*(dRline2"
 end
 ______________________________________________________________________

 Le  numero de la couleur d'avant-plan est croissant vers la gauche, et
 le numero de la couleur d'arriere-plan est donne  dans  le  pave.   Si
 vous  desirez  un  affichage  en  gras,  ajoutez  un  01 comme premier
 parametre.  Mettez un point-virgule entre chaque parametre, et  mettez
 l'ensemble de la sequence comme _p_a_r_a_m_e_t_r_e_s.

 33..  AAffffiicchhaaggee ppaarr ttyyppee ddee ffiicchhiieerrss

 La commande ls commence par regarder la definition des associations de
 couleurs dans le fichier ~/.dir_colors et s'il n'existe pas utilise le
 fichier  /etc/DIR_COLORS.   Ces  fichiers  contiennent  des entrees du
 style :

     LINK 36;1           # lien symbolique
     FIFO 40;33          # tube
     SOCK 41;01;35       # socket
     BLK 41;33;01        # gestionnaire en mode bloc
     CHR 41;33;01        # gestionnaire en mode caractere

     EXEC 32;1           # fichier avec droit d'execution

     .tar 01;31          # archives et fichiers compresses
     .tgz 01;31
     .zip 01;31
     .z   01;31
     .Z   01;31
     .gz  01;31

 les sequences ANSI donnees en parametres sont ici  donnees  exactement
 avec  la  meme  syntaxe que pour la commande _s_e_t_t_e_r_m.  Modifiez ceci a
 votre guise, et voyez le resultat d'un _l_s sur /sbin, /etc et /dev.

 Afin que le fichier /etc/DIR_COLORS  ou  ~/.dir_colors  soit  pris  en
 compte,   il  vous  faut  rajouter  dans  /etc/profile  ou  ~/.profile
 (sh/bash) ou /etc/csh.login ou ~/.login (csh/tcsh) la ligne :

  eval `/bin/dircolors`

 AATTTTEENNTTIIOONN : cette ligne doit etre placee avant une quelconque  defini-
 tion  d'alias  pour ls.  Cette commande lit le fichier /etc/DIR_COLORS
 ou ~/.dir_colors et fournit les variables d'environnement LS_COLORS et
 LS_OPTIONS ainsi que les alias ls, dir, vdir, d et v.

 44..  CCoommmmeenntt ddoonnnneerr uunnee ccoonnffiigguurraattiioonn ppaarr ddeeffaauutt

 Ceci  est  realise  individuellement  pour  chaque console virtuelle a
 l'aide de la sequence ANSI : (-- Cette information a  ete  trouvee  en
 parcourant  le  source du noyau. Je ne peux donc dire s'il s'agit d'un
 standard.--)

         ESC [ 8 ]

 qui specifie les valeurs par defaut des couleurs d'avant  et  arriere-
 plan.   La sequence ANSI de recomposition des attributs (ESC [ m) per-
 met alors de prendre en compte ces couleurs plutot que  du  blanc  sur
 fond noir.

 La  methode  decrite ici est supposee etre pour des systemes "isoles",
 dans le sens ou les logins ne se font que  sur  la  console.  Ceci  ne
 marche  pas  forcement pour des logins se faisant depuis des terminaux
 distants, des connexions par modem ou d'autres machines, qui  dans  ce
 cas  ne  comprendrait  pas  les sequences.  L'interpretation des codes
 ANSI est une propriete des consoles Linux et  n'existe  que  dans  peu
 d'autres programmes de terminal.

 Si  vous etes sur un systeme "isole", un bon moyen de faire prendre en
 compte les couleurs pour chaque console est  de  modifier  le  fichier
 /etc/issue, et d'en voir le resultat en se delogeant. Generalement (et
 en particulier dans les distributions Slackware) ce fichier est lu  et
 affiche  a chaque reboot.  Ainsi si votre /etc/rc.d/rc.S contient (aux
 environs de la ligne 75) :

   # Initialise /etc/issue et /etc/motd pour qu'il donne la version du noyau utilise
   # ATTENTION : les fichiers /ETC/ISSUE AND /ETC/MOTD sont crees a chaque boot.
   # Mettez ceci en commentaire si vous desirez personnaliser une bonne fois pour
   # toute ces fichiers.
   echo ""> /etc/issue
   echo Bienvenue dans le monde merveilleux de Linux \
        `/bin/uname -a | /bin/cut -d\  -f3`. >> /etc/issue
   echo >> /etc/issue

 Mettez ces lignes en commentaire ou modifiez comme suit :

   # Mettez ceci en commentaire si vous desirez personnaliser une bonne fois pour
   # toute ces fichiers
   ESCAPE="<remplacez ici par un seul caractere d'echappement>"
   echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue

 Mon shell de  demarrage  ne  comprend  pas  le  \033,  je  dois  alors
 specifier  le  code  ASCII  27  dans  mon script comme indique dans le
 premier paragraphe.  La ligne ressemble alors a ESCAPE="^[".

 Ce code a pour effet de  ramener  le  curseur  en  debut  de  fenetre,
 changer  les  couleurs,  sauver la selection et effacer l'ecran. Cette
 modification n'aura un effet qu'au prochain reboot.

 Si votre "boite  Linux" n'est pas "isolee", il se  peut  que  certains
 problemes  apparaissent lors des connexions des utilisateurs distants.
 Ceci est du au fait que leur terminal ne comprend  pas  les  sequences
 d'echappement ANSI.

 Vous devez alors ajouter au niveau de l'utilisateur :

 ______________________________________________________________________
   if [ "\*(dRTERM" = "console" ]; then
       echo "\033[37;44m\033[8]"
   fi

 ou

   if ( "\*(dRTERM" == "console" ) then
     echo "\033[37;44m\033[8]"
   endif
 ______________________________________________________________________

 Si l'on desire que la modification se fasse pour tous les utilisateurs
 du systeme, il suffit alors que root modifie les fichiers /etc/profile
 ou  /etc/csh.login.  (Je rappelle une derniere fois que si le shell ne
 peut interpreter les \0xx  (en  particulier  l'echappement  \033),  il
 suffit de remplacer ce dernier par "ESC".

 55..  CCoommmmeennttaaiirreess eett ccrriittiiqquueess

 L'auteur original de ce document nous dit :

   This is still a rough draft, and English isn't my primary language.
 Please feel free to correct me on the above text in order to make it as
 clear and correct as possible.  This goes, of course, for the information
 provided as well.

 Comments and criticism goes to
 --
   Thorbjo/rn Ravn Andersen              "...and...Tubular Bells!"
   [email protected]
   <http://www.imada.ou.dk/~ravn>

 et  je  suis  bien  d'accord  avec  lui.   Pour  la version francaise,
 n'hesitez pas une seconde  a  m'envoyer  vos  remarques,  corrections,
 ajouts, bouteilles de vin, etc...

 66..  CCooppyyrriigghhtt

 Cette  version est place sous copyright (c)1995 de Pierre Vassellerie.

 Comme tous les documents HOWTO, ce document  peut  etre  reproduit  et
 distribue  dans  son  integralite  ou partiellement, par quelque moyen
 physique que ce soit.  Il  reste  malgre  tout  sujet  aux  conditions
 suivantes :

 +o  La  mention  des  copyrights  doit  etre  conservee, et la presente
    section preservee dans son integralite sur toute copie integrale ou
    partielle.

 +o  Les  traductions  et travaux derives doivent etre approuves par les
    auteurs avant distribution.

 +o  Si vous distribuez ce ttrraavvaaiill  en  partie,  vous  devez  mentionnez
    comment  obtenir  une  version  integrale de ce document et etre en
    mesure de la fournir.
 +o  De petites portions de ce document  peuvent  etre  utilisees  comme
    illustrations   d'une   presentation   ou   comme   remarques  sans
    autorisation prealable si les citations d'usage sont realisees.

 Des exceptions a ces regles  peuvent  etre  accordees  dans  des  buts
 educatifs,  ecrivez  a l'auteur et demandez. Ces restrictions ont pour
 but unique de proteger  les  auteurs  et  leur  travail.   Toute  aide
 educative de ce document sera grandement appreciee.