dircolors: globalnie modyfikuj ustawienia kolorów

40

Rozumiem lszastosowania dircolorsdo wyświetlania kolorowych wyników. dircolorsma domyślną bazę danych kolorów powiązanych z rozszerzeniami plików, którą można wydrukować za pomocą polecenia

dircolors --print-database

Z tego, man dir_colorsco przeczytałem, powinna znajdować się ogólnosystemowa baza danych /etc/DIR_COLORS. Ale ten plik nie istnieje w moim systemie (Debian). Jak mogę zmienić ustawienia kolorów dla całego systemu dircolors? Skąd polecenie dircolors --print-databasebierze ustawienia, gdy nie istnieje żaden plik.

Wiem, że użytkownik może mieć plik specyficzny dla użytkownika ~/.dircolorsze swoimi ustawieniami, ale nie jest to dla mnie odpowiednie, ponieważ muszę zmienić ustawienia dla wszystkich.

Drugie pytanie dotyczy tego, czy można zastosować 8-bitowe kolory dla dircolors. Mój terminal to xterm-256color.

użytkownik1968963
źródło

Odpowiedzi:

36

lspobiera ustawienia kolorów ze zmiennej środowiskowej LS_COLORS. dircolorsjest jedynie wygodnym sposobem na wygenerowanie tej zmiennej środowiskowej. Aby ta zmienna środowiskowa obowiązywała w całym systemie, umieść ją w pliku startowym powłoki.

Na bash, że można umieścić w tym /etc/profile:

# `dircolors` prints out `LS_COLORS='...'; export LS_COLORS`, so eval'ing
# $(dircolors) effectively sets the LS_COLORS environment variable.

eval "$(dircolors /etc/DIR_COLORS)"

Bo zshalbo włożysz go, /etc/zshrcalbo zorganizujesz zshczytanie /etc/profileprzy starcie. Twoja dystrybucja mogła już zshto zrobić. Po prostu podkreślam, że ustawienie dircolorsdla naprawdę każdego zależy od używanej powłoki.

Jeśli chodzi o to, skąd dircolorsbierze się jego ustawienia, kiedy nie określisz pliku, używa on tylko wbudowanych ustawień domyślnych.

Możesz użyć xterm256 kolorów kodów ucieczki w pliku dircolors, ale pamiętaj, że będą działać tylko dla xtermkompatybilnych terminali. Nie będą na przykład działać na konsoli tekstowej Linuksa.

Format 256 kodów ucieczki kolorów dotyczy 38;5;colorNkolorów pierwszego planu i 48;5;colorNkolorów tła. Na przykład:

.mp3  38;5;160                   # Set fg color to color 160      
.flac 48;5;240                   # Set bg color to color 240
.ogg  38;5;160;48;5;240          # Set fg color 160 *and* bg color 240.
.wav  01;04;05;38;5;160;48;5;240 # Pure madness: make bold (01), underlined (04), blink (05), fg color 160, and bg color 240!
Matt
źródło
1
czy mógłbyś wyjaśnić, w jaki sposób mogę użyć 256 kolorowych kodów ucieczki? Powiedzmy, że chcę zmienić następujące ustawienia, .mp3 00;36aby użyć color126 z tabeli kolorów xterm-256 upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
user1968963
1
Jasne, zobacz moją edycję.
Matt.
8

Skąd polecenie dircolors --print-databasebierze ustawienia, gdy nie istnieje żaden plik.

Zgodnie z instrukcją używa wstępnie skompilowanej bazy danych w przypadku braku pliku.

Jeśli plik jest określony, dircolors czyta go, aby określić, które kolory należy zastosować dla jakich typów plików i rozszerzeń. W przeciwnym razie używana jest wstępnie skompilowana baza danych. Aby uzyskać szczegółowe informacje na temat formatu tych plików, uruchom „ dircolors --print-database”.

Aby zmienić ustawienia dla wszystkich, możesz utworzyć /etc/dircolorsplik i dodać następujące elementy do /etc/bashrc:

d=/etc/dircolors
test -r $d && eval "$(dircolors $d)"
diabelnie
źródło
7

Linux ustawia kolory tła konsoli dircolors:

Twój plik dircolors kontroluje kolory słów pojawiających się za pomocą ls na konsoli. Znajdź ten .dircolorsplik dla swojej dystrybucji, link do pomocy:

http://www.linuxfromscratch.org/blfs/view/svn/postlfs/profile.html

Dla mnie na Fedorze 17 mój plik dircolors to: /etc/DIR_COLORS

Skopiuj /etc/DIR_COLORSdo swojego /home/el/.dircolorskatalogu. Utwórz go, jeśli nie istnieje.

Edytuj /home/el/.dircolors, poszukaj tekstu „dir”.

Zmień to:

DIR 01;34   # directory

Do tego:

DIR 01;36   # directory

Zapisz, zamknij i uruchom ponownie powłokę. Katalogi zmieniają kolor z ciemnoniebieskiego na czarny (nieczytelny) na jasny turkusowy na czarnym (czytelny).

Eric Leschinski
źródło
2
-1: nie /etc/DIR_COLORSw dystrybucji OP, Debian. I on już wie o ~/.dircolorstym, nie było to pytanie
MestreLion