CLICOLOR und LS_COLORS in bash

48

Ich habe das folgende Setup in .bashrc zum Ausmalen von Listings.

export CLICOLOR = 1
exportiere 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: oder = 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: ';

Diese Seite zeigt den Code für Farben, und ich möchte die Verzeichnisfarbe in "helle Farbe" ändern. Aber das Folgende hat keinen Einfluss darauf.

di = 04; 94

Das Interessante ist, dass ich selbst nach dem Auskommentieren von LS_COLORS eine farbige Ausgabe sehen kann, solange ich CLICOLOR = 1 habe.

  • Was kann ich tun, um das Verzeichnis hellblau (94) zu färben?
  • Was ist es für CLICOLOR und LS_COLORS? Warum funktioniert das Färben ohne LS_COLORS?
Prosseek
quelle

Antworten:

53

Es gibt verschiedene Implementierungen von Farbe für ls, und Sie haben einige davon zusammengeführt.

  • Auf FreeBSD und Mac OS X , lszeigen Farben , wenn die CLICOLORUmgebungsvariable gesetzt ist oder wenn -Gauf der Kommandozeile übergeben. Die tatsächlichen Farben werden über die LSCOLORSUmgebungsvariable konfiguriert (integrierte Standardeinstellungen werden verwendet, wenn diese Variable nicht festgelegt ist). Verwenden Sie, um Verzeichnisse hellblau anzuzeigen

    export LSCOLORS=Exfxcxdxbxegedabagacad
  • Bei GNU ls , z. B. unter Linux, lswerden Farben angezeigt , wenn dies --colorin der Befehlszeile übergeben wird. Die tatsächlichen Farben werden über die LS_COLORSUmgebungsvariable konfiguriert , die mit dem dircolorsBefehl festgelegt werden kann (integrierte Standardeinstellungen werden verwendet, wenn diese Variable nicht festgelegt ist).

Gilles 'SO - hör auf böse zu sein'
quelle
5
Danke für die Antwort, könntest du mir beibringen, was Exfxcxdxbxegedabagacad bedeutet?
Prosseek
@prosseek: Siehe die Manpages, auf die ich verlinkt habe. Die ersten beiden Zeichen sind beispielsweise der Vordergrund und der Hintergrund für Verzeichnisse. Sie stehen efür Dunkelblau, EHellblau und xStandard. fin der dritten Position macht symbolische Links Magenta und so weiter.
Gilles 'SO- hör auf böse zu sein'
Wie mache ich in derselben Zeile treeShowfarben? Auf meinem Debian-Rechner zeigt Tree Farben, auf meinem Mac jedoch nicht. Umgebungsvariablen sind für Farbe wie oben beschrieben vorhanden. Mein Mac zeigt also Farben für alle lsBefehle, aber nicht tree. Ich brachte Baum mit Gebräu an.
DanCat
2
@ DanCat Ich weiß es nicht. treeund lsstehen in keinem Zusammenhang Dienstprogramme, gibt es keinen Grund , warum die Einstellungen für einen zum anderen gelten würde. Sie sollten dies als separate Frage stellen.
Gilles 'SO- hör auf böse zu sein'
1
Für die faulen Leute (wie ich) ist hier ein LSCOLORS-Generator geoff.greer.fm/lscolors
udondan
11

Was ist es für CLICOLOR und LS_COLORS? Warum funktioniert das Färben ohne LS_COLORS?

CLICOLORschaltet die Farben ein oder aus. LS_COLORSist nicht erforderlich und lässt Sie die Farben anpassen.

Beachten Sie, dass auf einigen Betriebssystemen (wie MacOSX und FreeBSD) der Wert benannt wird LSCOLORS, nicht LS_COLORS.

Ich vermeide es, die Farbe mit LS_COLORS einzustellen, da ich dann dasselbe Farbschema auf hundert verschiedenen Computern und 10 verschiedenen Un * xen anwenden muss. Stattdessen ändere ich die Farbe in meinem Terminal-Programm, das auf den meisten Unix-Hosts gleich funktioniert.

Stefan Lasiewski
quelle