CLICOLOR i LS_COLORS w bash

48

Mam następującą konfigurację w .bashrc do kolorowania list.

eksport CLICOLOR = 1
eksport 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: lub = 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: ';

Ta strona pokazuje kod kolorów i chcę zmienić kolor katalogu na „jasny kolor”. Ale wykonanie poniższych czynności nie ma na to wpływu.

di = 04; 94

Interesujące jest to, że nawet po skomentowaniu LS_COLORS widzę kolorowe wydruki, o ile mam CLICOLOR = 1.

  • Co powinienem zrobić, aby kolor katalogu był jasnoniebieski (94)?
  • Co to jest dla CLICOLOR i LS_COLORS? Dlaczego kolorowanie działa bez LS_COLORS?
prosseek
źródło

Odpowiedzi:

53

Istnieje kilka różnych implementacji koloru dla ls, a niektóre z nich zostały skonfliktowane.

  • Na FreeBSD i Mac OS X , lsprzedstawia kolory, jeśli CLICOLORzmienna jest ustawiona lub jeśli -Gjest przekazywane w linii poleceń. Rzeczywiste kolory są konfigurowane za pomocą LSCOLORSzmiennej środowiskowej (wbudowane wartości domyślne są używane, jeśli ta zmienna nie jest ustawiona). Aby wyświetlić katalogi w kolorze jasnoniebieskim, użyj

    export LSCOLORS=Exfxcxdxbxegedabagacad
  • W GNU ls , np. W systemie Linux, lspokazuje kolory, jeśli --colorzostanie przekazany w wierszu poleceń. Rzeczywiste kolory są konfigurowane za pomocą LS_COLORSzmiennej środowiskowej, którą można ustawić za pomocą dircolorspolecenia (wbudowane ustawienia domyślne są używane, jeśli ta zmienna nie jest ustawiona).

Gilles „SO- przestań być zły”
źródło
5
Dzięki za odpowiedź, czy możesz nauczyć mnie, co oznacza Exfxcxdxbxegedabagacad?
prosseek
@prosseek: Zobacz strony podręcznika, do których linkowałem. Na przykład pierwsze dwa znaki to pierwszy plan i tło dla katalogów, eoznacza ciemnoniebieski, Eoznacza jasnoniebieski i xoznacza domyślny. fna trzeciej pozycji tworzy symboliczne linki magenta i tak dalej.
Gilles „SO- przestań być zły”
W tej samej linii, w jaki sposób tworzyć treekolory pokazów? Drzewo pokazuje kolory na moim komputerze Debian, ale nie robi tego na moim Macu. Zmienne środowiskowe są obecne dla koloru, jak opisano powyżej. Więc mój Mac pokazuje kolory dla dowolnych lspoleceń, ale nie tree. Zainstalowałem drzewo z naparem.
DanCat
2
@ DanCat Nie wiem. treei lssą niepowiązanymi narzędziami, nie ma powodu, dla którego ustawienia jednego miałyby obowiązywać dla drugiego. Powinieneś zadać to jako osobne pytanie.
Gilles „SO- przestań być zły”
1
Dla leniwych ludzi (takich jak ja) oto generator LSCOLORS geoff.greer.fm/lscolors
udondan
11

Co to jest dla CLICOLOR i LS_COLORS? Dlaczego kolorowanie działa bez LS_COLORS?

CLICOLORwłącza lub wyłącza kolory. LS_COLORSnie jest wymagane i pozwoli ci dostosować kolory.

Należy pamiętać, że w niektórych systemach operacyjnych (takich jak MacOSX i FreeBSD) wartość jest nazywana LSCOLORS, a nie nazwa LS_COLORS.

Unikam ustawiania koloru za pomocą LS_COLORS, ponieważ wtedy muszę zastosować ten sam schemat kolorów na stu różnych komputerach i 10 różnych Un * xach. Zamiast tego modyfikuję kolor w moim programie terminalowym, który działa tak samo na większości hostów Uniksa.

Stefan Lasiewski
źródło