web-dev-qa-db-fra.com

CLICOLOR et LS_COLORS en bash

J'ai la configuration suivante dans .bashrc pour la coloration des listes.

 export CLICOLOR = 1 
 export LS_COLORS = 'no = 00: fi = 00: di = 00; 34: ln = 01; 36: pi = 40; 33: so = 01; 35: do = 01; 35: bd = 40; 33; 01: cd = 40; 33; 01: ou = 40; 31; 01: ex = 01; 32: *. tar = 01; 31: *. tgz = 01; 31: *. Arj = 01; 31: *. Taz = 01; 31: *. Lzh = 01; 31: *. Zip = 01; 31: *. Z = 01; 31: *. Z = 01; 31: * .gz = 01; 31: *. bz2 = 01; 31: *. deb = 01; 31: *. rpm = 01; 31: *. jar = 01; 31: *. jpg = 01; 35: *. jpeg = 01; 35: *. gif = 01; 35: *. bmp = 01; 35: *. pbm = 01; 35: *. pgm = 01; 35: *. ppm = 01; 35: *. tga = 01; 35: *. Xbm = 01; 35: *. Xpm = 01; 35: *. Tif = 01; 35: *. Tiff = 01; 35: *. Png = 01; 35: *. Mov = 01; 35: *. Mpg = 01; 35: *. Mpeg = 01; 35: *. Avi = 01; 35: *. Fli = 01; 35: *. Gl = 01; 35: *. Dl = 01; 35: * .xcf = 01; 35: *. xwd = 01; 35: *. ogg = 01; 35: *. mp3 = 01; 35: *. wav = 01; 35: '; 

Ce site montre le code des couleurs, et je veux changer la couleur du répertoire en "couleur claire". Mais faire di comme suit ne l'affecte pas.

di = 04; 94

La chose intéressante est que même après avoir commenté LS_COLORS, je peux voir une sortie colorée tant que j'ai CLICOLOR = 1.

  • Que dois-je faire pour rendre la couleur du répertoire bleu clair (94)?
  • Qu'est-ce que c'est pour CLICOLOR et LS_COLORS? Pourquoi la coloration fonctionne sans LS_COLORS?
51
prosseek

Il existe plusieurs implémentations différentes de la couleur pour ls, et vous en avez regroupé certaines.

  • Sur FreeBSD et Mac OS X , ls affiche les couleurs si la variable d'environnement CLICOLOR est définie ou si -G est transmis sur la ligne de commande. Les couleurs réelles sont configurées via la variable d'environnement LSCOLORS (les valeurs par défaut intégrées sont utilisées si cette variable n'est pas définie). Pour afficher les répertoires en bleu clair, utilisez

    export LSCOLORS=Exfxcxdxbxegedabagacad
    
  • Avec GNU ls , par ex. sous Linux, ls affiche les couleurs si --color est transmis sur la ligne de commande. Les couleurs réelles sont configurées via le LS_COLORS variable d'environnement, qui peut être définie avec la commande dircolors (les valeurs par défaut intégrées sont utilisées si cette variable n'est pas définie).

Qu'est-ce que c'est pour CLICOLOR et LS_COLORS? Pourquoi la coloration fonctionne sans LS_COLORS?

CLICOLOR active ou désactive les couleurs. LS_COLORS n'est pas requis et vous permettra de personnaliser les couleurs.

Notez que sur certains systèmes d'exploitation (comme MacOSX et FreeBSD), la valeur est nommée LSCOLORS, pas LS_COLORS.

J'évite de définir la couleur en utilisant LS_COLORS, car alors je dois appliquer ce même schéma de couleurs sur une centaine d'ordinateurs différents et 10 Un * x différents. Au lieu de cela, je modifie la couleur dans mon programme Terminal, qui fonctionne de la même manière sur la plupart des hôtes Unix.

11
Stefan Lasiewski

Si vous voulez un script wrapper pour ls qui fonctionne sur tous les systèmes, en supprimant ces différences de couleur, etc. voir: http://www.pixelbeat.org/scripts/l

4
Pádraig Brady