Istnieją dwa katalogi pokazane przez „ls”. Zwykle katalogi w dowolnym miejscu są niebieskie na czarnym tle. Ale pierwszy jest niebieski na zielonym i niemożliwy do odczytania. Dlaczego to? Jak sprawić, by był niebieski na czarnym lub przynajmniej coś jasnego na czymś ciemnym?
To jest na Ubuntu 12.04, używając bash w Gnome Terminal. W Konsole niebieski jest nieco ciemniejszy i czytelny, chociaż mógłby być o wiele lepszy.
Odpowiedź
Oprócz kolorowania pliki na podstawie ich typu (turkusowy dla plików audio, jasnoczerwony dla archiwów i plików skompresowanych oraz fioletowy dla obrazów i filmów), ls
także koloruje pliki i katalogi na podstawie ich atrybutów:
- Czarny tekst z zielonym tłem wskazuje, że katalog jest możliwy do zapisu przez inne osoby z wyjątkiem użytkownika i grupy będącej jego właścicielem, i ma ustawiony bit lepki (
o+w, +t
) . - Niebieski tekst z zielonym tłem wskazuje, że katalog jest zapisywalny przez inne osoby oprócz użytkownika i grupy będącego właścicielem i nie ma ustawionego bitu lepkiego (
o+w, -t
).
Stephano Palazzo pod adresem Ask Ubuntu przedstawił ten bardzo pouczający obraz na temat różnych kolorów atrybutów:
Jak wskazał terdon , ustawienia kolorów można modyfikować za pomocą dircolors
. Dostęp do listy różnych ustawień kolorowania można uzyskać za pomocą dircolors --print-database
.
Każdy wiersz wyniku, na przykład BLK 40;33;01
ma postać:
[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
-
TARGET
wskazuje cel reguły kolorowania -
TEXT_STYLE
wskazuje styl tekstu:-
00
= brak -
01
= pogrubienie -
04
= podkreślenie -
05
= blink -
07
= reverse, -
08
= ukryty
-
-
FOREGROUND_COLOR
wskazuje kolor pierwszego planu:-
30
= czarny -
31
= czerwony -
32
= zielony -
33
= żółty -
34
= niebieski, -
35
= magenta -
36
= cyjan -
37
= biały
-
-
BACKGROUND_COLOR
wskazuje kolory tła:-
40
= czarny -
41
= czerwony -
42
= zielony -
43
= żółty -
44
= niebieski, -
45
= magenta -
46
= cyjan -
47
= biały
-
Pola można pomijać zaczynając od prawej, więc na przykład .tar 01;31
oznacza pogrubienie i kolor czerwony.
XTerm i większość innych nowoczesnych emulatorów terminali obsługuje 256 kolorów.
256-kolorowy kod koloru pierwszego planu XTerm ma postać:
38;5;[FOREGROUND_COLOR]
256-kolorowy kod koloru tła XTerm to formularz:
48;5;[BACKGROUND_COLOR]
gdzie zarówno FOREGROUND_COLOR
, jak i BACKGROUND_COLOR
to ponumeruj zakres 0-255. Pełna lista kodów kolorów dla trybów 16 i 256 kolorów jest pokazana na poniższym zrzucie ekranu:
Komentarze
Odpowiedź
Kolory ls
mogą reprezentować uprawnienia , domyślnie w niektórych systemach wyświetlane są katalogi, w których każdy ma uprawnienia do zapisu, na zielonym tle:
Możesz zmienić kolory, edytując zmienną $LS_COLORS
za pomocą dircolors
(z man ls
):
Using color to distinguish file types is disabled both by default and with --color=never. With --color=auto, ls emits color codes only when standard output is connected to a terminal. The LS_COLORS environment variable can change the settings. Use the dircolors command to set it.
Składnia jest wprawdzie trochę irytująca, ale możesz zmienić ten kolor, tworząc plik z wybranymi kolorami i zapisując go jako ~/.dircolors
:
dircolors -p > ~/.dircolors
To polecenie wypisze wartości domyślne do ~/.dircolors
. Będziesz wtedy musiał edytować ten plik i zmienić ten wiersz:
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
Na przykład, aby uczynić go czarnym tekstem na czerwonym tle (patrz tutaj , aby uzyskać listę kodów kolorów):
OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky
Nie musisz mieć wszystkich wartości domyślnych , możesz także po prostu utworzyć plik z pojedynczą linią, ponownie definiując tylko ten, który chcesz zmienić. W każdym razie, po utworzeniu pliku, załaduj go za pomocą:
eval "$(dircolors ~/.dircolors)";
I oto w akcji:
Aby stało się to automatycznie, dodaj eval
polecenie powyżej do pliku ~/.bashrc
.
Komentarze
- Domyślne kolory często wydają się wskazywać, że oryginalny autor nienawidzi nas i naszych oczu …
- Dzięki. Dlaczego czasami piszesz ~ / .dirname, a czasami ~ / dircolors, a czasami ~ / .dircolors? czy mają być takie same?
- Th anks. Dlaczego
eval "$(dircolors ~/dircolors)";
zamiast w bardziej bezpośredni sposób, na przykładdircolors ~/dircolors
? - @Tim, ponieważ dircolors drukuje tylko ustawienia, trzeba je ocenić, aby je czytać.
- czytać je przez kogo?
Odpowiedz
Chociaż wszystkie odpowiedzi techniczne są prawdziwe, uznałbym to za trochę nieformalne ostrzeżenie, że hojnie rozdajesz swoje prawa lub kopiujesz criss + cross … (najczęściej wszyscy to robimy , żeby wszystko na początku działało, co?)
Jak ustawić kolor niebieski na czarnym, …?
Dobrym sposobem na przywrócenie praw, które najprawdopodobniej chcesz, jest takie stwierdzenie:
chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/
Najlepiej rozumieć, co to robi, jeśli rozumiesz przeznaczenie wielkich liter + X „wykonanie specjalne”, np. Zobacz Wikipedia
Jest naprawdę użyteczne tylko wtedy, gdy jest używane z „+” i zazwyczaj w połączeniu z opcją -R do nadania grupie lub innej osobie dostępu do dużego drzewa katalogów bez ustawiania uprawnień do wykonywania normalnych plików (takich jak pliki tekstowe), co normalnie by się stało, gdybyś użył właśnie „chmod -R a + rx …
Odpowiedź
Oto 3 kroki, które zastosowałem, aby zmienić kolory:
Najpierw skopiuj domyślne kolory do pliku
dircolors -p > ~/.dircolors
Następnie zmodyfikuj ten plik. Wewnątrz można znaleźć wartości kolorów, a tutaj jest więcej:
Code Color 0 Default Colour 1 Bold 4 Underlined 5 Flashing Text 7 Reverse Field 31 Red 32 Green 33 Orange 34 Blue 35 Purple 36 Cyan 37 Grey 40 Black Background 41 Red Background 42 Green Background 43 Orange Background 44 Blue Background 45 Purple Background 46 Cyan Background 47 Grey Background 90 Dark Grey 91 Light Red 92 Light Green 93 Yellow 94 Light Blue 95 Light Purple 96 Turquoise 100 Dark Grey Background 101 Light Red Background 102 Light Green Background 103 Yellow Background 104 Light Blue Background 105 Light Purple Background 106 Turquoise Background
( źródło )
Na koniec dodaj następującą linię do swojego pliku ~/.bashrc
, aby kolory były automatycznie ładowane po otwarciu terminala:
eval "dircolors ~/.dircolors" > /dev/null
Dla ~/.zshrc
:
if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi
Odpowiedz
Aby szybko rozwiązać problem (zaznacz inne pliki do zapisu na żółto na nobg):
LS_COLORS+=":ow=01;33"
Zamień 33
na 34
zamiast niebieskiego na nobg. Jeszcze prościej, aby nofg na nobg:
LS_COLORS+=:ow=
Aby zmiana była trwała, dołącz ją do swojego .profile:
echo "export LS_COLORS+=":ow=01;33"" >> ~/.profile
Aby wyświetlić niezwiązane z rozszerzeniami reguły LS_COLORS:
echo "$LS_COLORS" | sed "s/:/\n/g" | grep -v "\*."
sed
umieszcza każdą regułę w jednym wierszu i grep
usuwa reguły zaczynające się od *.".
Do poznaj ls
kolory na swoim terminalu, rozważ użycie
C="$LS_COLORS" function sc () { echo "$LS_COLORS" | sed "s/:/\n/g" | grep -v "\*." } function t () { ls /mnt # Or the path to your example directory. }
Następnie
LS_COLORS="$C:ow=38;5;250;48;5;025";t
Jak stwierdzono w innej odpowiedzi (tej Thomasa Nymana), 38;5;
jest prefiksem pierwszego planu x-term 256-colors, a 48;5;
dla 256-kolorowego tła x-term. Jednak 256 kolorów nie jest obsługiwane przez wszystkie terminale.
Zobacz także – Co oznaczają różne kolory w ls? – na AskUbuntu .
Komentarze
- Znalazłem upuszczanie
LS_COLORS+=':ow=01;33'
do mojego~/.zshrc
pomogło wyłączyć kolor tła dla katalogów w repozytorium git.To jest na komputerze z systemem Windows 10 z dystrybucją Pengwin-WSL. Teraz wszystkie katalogi w git-repo są czytelne.
Odpowiedz
To znaczy, że ten folder ma uprawnienia, jeśli uruchomisz to:
сhmod og-w AU_LI
to usunie bgcolor 🙂
Odpowiedź
Aby to naprawić, wypróbuj ow na LS_COLORS
Na przykład:
~LS_COLORS="fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33" ~ls -l
Teraz dodajesz ow (OTHER_WRITABLE
) opcja
~export LS_COLORS="fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33:ow=0" ~ls -l
Komentarze
- Jeśli chcesz zmienić kolor za pomocą .dir_colors, możesz dodać
OTHER_WRITABLE 34;43
. Podziękowania dla: gist.github.com/jmoz/280005/…
Odpowiedź
Możesz zmienić odcień zieleni w Putty, aby tekst był czytelny.
Otwórz Putty i przejdź do okna \ Colors, wybierz „ANSI Green”, ustaw go na ciemniejszą zieleń (R: 0 G: 70 B: 0).
38;5;
rozpoczyna xterm 256-kolorowy kod koloru pierwszego planu.48;5;
uruchamia 256-kolorowy kod koloru tła xterm. Cyan na wyjściu moich dircolors to38;5;51
nie36
, chociaż wynik jest taki sam.