Există două directoare afișate de „eu”. În mod normal, directoarele de oriunde sunt albastre pe fundal negru. Dar primul este albastru pe verde și imposibil de citit. De ce asta? Cum se face albastru pe negru sau cel puțin ceva luminos pe ceva întunecat?
Acesta este pe Ubuntu 12.04, folosind bash în Gnome Terminal. În Konsole, albastrul este ușor mai întunecat și poate fi citit, deși ar putea fi mult mai bun.
Răspuns
În afară de colorare fișiere bazate pe tipul lor (turcoaz pentru fișiere audio, roșu aprins pentru Arhive și fișiere comprimate și violet pentru imagini și videoclipuri), ls
colorează și fișiere și directoare pe baza atributelor lor: / p>
- Textul negru cu fundal verde indică faptul că un director poate fi scris de către alții în afară de utilizatorul și grupul proprietar și are setul de biți lipicios (
o+w, +t
) . - Textul albastru cu fundal verde indică faptul că un director poate fi scris de către alții în afară de utilizatorul și grupul proprietar și nu are setul de biți lipici (
o+w, -t
).
Stephano Palazzo la Ask Ubuntu a făcut această imagine foarte instructivă asupra diferitelor culori ale atributelor:
După cum a subliniat terdon , setările de culoare pot fi modificate prin dircolors
. O listă a diferitelor setări de colorare poate fi accesată cu dircolors --print-database
.
Fiecare linie de ieșire, cum ar fi BLK 40;33;01
, este de forma:
[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
-
TARGET
indică ținta pentru regula de colorare -
TEXT_STYLE
indică stilul textului:-
00
= none -
01
= bold -
04
= underscore -
05
= clipire -
07
= invers, -
08
= ascuns
-
-
FOREGROUND_COLOR
indică culoarea din prim-plan:-
30
= negru -
31
= roșu -
32
= verde -
33
= galben -
34
= albastru, -
35
= magenta -
36
= cyan -
37
= alb
-
-
BACKGROUND_COLOR
indică culorile de fundal:-
40
= negru -
41
= roșu -
42
= verde -
43
= galben -
44
= albastru, -
45
= magenta -
46
= cyan -
47
= alb
-
Câmpurile pot fi omise începând din dreapta, deci, de exemplu, .tar 01;31
înseamnă bold și roșu.
XTerm și majoritatea celorlalte emulatoare de terminale moderne acceptă 256 de culori.
Un cod de culoare de prim-plan XTerm cu 256 de culori are forma:
38;5;[FOREGROUND_COLOR]
Un cod de culoare de fundal cu 256 de culori XTerm este de form:
48;5;[BACKGROUND_COLOR]
unde atât FOREGROUND_COLOR
cât și BACKGROUND_COLOR
numerotați intervalul 0-255. O listă completă a codurilor de culoare pentru modurile de culoare 16 și 256 sunt prezentate în captura de ecran de mai jos:
Comentarii
Răspuns
Culorile ls
pot reprezenta permisiunile , valorile implicite pentru unele sisteme sunt să afișeze directoare unde toată lumea are permisiuni de scriere cu un fundal verde:
Puteți schimba culorile editând variabila $LS_COLORS
utilizând dircolors
(din 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.
Sintaxa este un pic deranjantă aici, dar puteți schimba această culoare creând un fișier cu culorile dorite și salvându-l ca ~/.dircolors
:
dircolors -p > ~/.dircolors
Această comandă va imprima valorile implicite în ~/.dircolors
. Apoi, va trebui să editați acel fișier și să schimbați această linie:
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
De exemplu, pentru a face text negru pe un fundal roșu (consultați aici pentru o listă de coduri de culoare):
OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky
Nu trebuie să aveți toate valorile implicite , puteți, de asemenea, să creați un fișier cu o singură linie, redefinind-o doar pe cea pe care doriți să o modificați. Oricum, după ce ați creat fișierul, încărcați-l cu:
eval "$(dircolors ~/.dircolors)";
Și aici este în acțiune:
Pentru ca acest lucru să se întâmple automat, adăugați eval
de mai sus în fișierul ~/.bashrc
.
Comentarii
- Culorile implicite par să indice adesea că autorul original ne urăște pe noi și pe ochii noștri …
- Mulțumesc. De ce scrieți uneori ~ / .dirname și alteori ~ / dircolors și alteori ~ / .dicolori? se presupune că sunt aceleași?
- Th ciudate. De ce
eval "$(dircolors ~/dircolors)";
în loc de un mod mai direct, cum ar fidircolors ~/dircolors
? - @Tim deoarece dircolors tipărește doar setările, trebuie să o evaluați pentru a le putea citi.
- pentru a le citi de cine?
Răspundeți
Deși toate răspunsurile tehnice sunt adevărate, aș considera că este un avertisment informal, că ați eliminat drepturile un pic cu generozitate sau copiere criss + cross … (cel mai adesea facem cu toții , ca lucrurile să funcționeze inițial, nu?)
Cum se face albastru pe negru, …?
Un bun„ de-verde ”pentru a reveni la drepturile pe care cel mai probabil le doriți, este această afirmație:
chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/
Cel mai bine am înțeles ce face, dacă înțelegeți scopul majusculei + X „executare specială“, adică consultați Wikipedia
Este foarte util doar atunci când este utilizat cu „+” și de obicei în combinație cu opțiunea -R pentru a oferi acces grupului sau altui acces la un arbore de mari directoare fără a seta permisiunea de executare pentru fișierele normale (cum ar fi fișierele text), ceea ce s-ar întâmpla în mod normal dacă ați folosi „chmod -R a + rx … p>
Răspuns
Iată cei 3 pași pe care i-am folosit pentru a schimba culorile:
Mai întâi, copiați culorile implicite într-un fișier
dircolors -p > ~/.dircolors
Apoi modificați acest fișier. Puteți găsi câteva valori pentru culori în interior și iată câteva altele:
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
( sursă )
Și, în cele din urmă, adăugați următoarea linie în fișierul dvs. ~/.bashrc
pentru ca culorile să fie încărcate automat atunci când deschideți un terminal:
eval "dircolors ~/.dircolors" > /dev/null
Pentru ~/.zshrc
:
if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi
Răspuns
Pentru a remedia rapid problema, (faceți fișierele care pot fi scrise în galben pe nobg):
LS_COLORS+=":ow=01;33"
Înlocuiți 33
cu 34
pentru albastru pe nobg. Chiar și mai simplu, pentru ao face nofg pe nobg:
LS_COLORS+=:ow=
Pentru ca modificarea dvs. să fie permanentă, adăugați-o la .profile:
echo "export LS_COLORS+=":ow=01;33"" >> ~/.profile
Pentru a vizualiza regulile care nu au legătură cu extensia LS_COLORS:
echo "$LS_COLORS" | sed "s/:/\n/g" | grep -v "\*."
sed
pune fiecare regulă pe o singură linie și grep
elimină regulile care încep cu *.".
To explorați ls
culorile de pe terminalul dvs., luați în considerare utilizarea
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. }
Apoi
LS_COLORS="$C:ow=38;5;250;48;5;025";t
După cum sa menționat într-un alt răspuns (cel al lui Thomas Nyman), 38;5;
este prefixul pentru termenul 256-culori din prim-plan și 48;5;
pentru fundalul x-termen 256-culori. Cu toate acestea, 256 de culori nu sunt acceptate de toate terminalele.
Consultați și -Ce înseamnă diferitele culori în ls? – pe AskUbuntu .
Comentarii
- Am găsit că a scăpat
LS_COLORS+=':ow=01;33'
în~/.zshrc
a ajutat la dezactivarea fundalului de culoare pentru directoare într-un git-repo.Aceasta este pe o mașină Windows 10 cu o distribuție Pengwin-WSL. Acum toate directoarele din git-repo sunt lizibile.
Răspuns
Ei bine, asta înseamnă că acest folder are permisiuni dacă rulați acest lucru:
сhmod og-w AU_LI
va elimina bgcolor 🙂
Răspuns
Pentru a remedia acest lucru, încercați ow parametrul LS_COLORS
De exemplu:
~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
Acum adăugați ow (OTHER_WRITABLE
) opțiune
~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
Comentarii
- Dacă doriți să schimbați culoarea prin .dir_colors, puteți adăuga
OTHER_WRITABLE 34;43
. Mulțumim: gist.github.com/jmoz/280005/…
Răspuns
Puteți schimba tonul verde în Putty pentru a face textul lizibil.
Deschideți Putty și accesați Window \ Culori, selectați „ANSI Green”, setați-l la un verde mai închis (R: 0 G: 70 B: 0).
38;5;
pornește un cod de culoare de prim plan xterm 256 culori .48;5;
pornește un cod de culoare de fundal de 256 de culori xterm. Cianul din ieșirea mea din dircolors este38;5;51
nu36
deși rezultatul este același.