Det er to kataloger vist av «ls». Normalt er kataloger hvor som helst blå på svart bakgrunn. Men den første er blå på grønt og umulig å lese. Hvorfor er det sånn? Hvordan lage det blå på svart, eller i det minste noe lyst på noe mørkt?
Dette er på Ubuntu 12.04, ved hjelp av bash i Gnome Terminal. I Konsole er det blå litt mørkere og mulig å lese, men det kan være mye bedre.
Svar
Bortsett fra å fargelegge filer basert på deres type (turkis for lydfiler, lyse rødt for arkiver og komprimerte filer og lilla for bilder og videoer), ls
farger også filer og kataloger basert på deres attributter:
- Svart tekst med grønn bakgrunn indikerer at en katalog kan skrives av andre bortsett fra den brukeren og gruppen som eier, og har det klebrig bit-settet (
o+w, +t
) . - Blå tekst med grønn bakgrunn indikerer at en katalog kan skrives av andre bortsett fra den brukeren og gruppen som eier, og har ikke den klissete bitverdien (
o+w, -t
).
Stephano Palazzo over på Ask Ubuntu har laget dette veldig lærerike bildet over de forskjellige attributtfargene:
Som terdon påpekte, kan fargeinnstillingene endres via dircolors
. En liste over de forskjellige fargeleggingsinnstillingene er tilgjengelige med dircolors --print-database
.
Hver linje med utdata, for eksempel BLK 40;33;01
, har formen:
[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
-
TARGET
angir målet for fargelegelen -
TEXT_STYLE
angir tekststilen:-
00
= ingen -
01
= fet -
04
= understrek -
05
= blink -
07
= omvendt, -
08
= skjult
-
-
FOREGROUND_COLOR
angir forgrunnsfargen:-
30
= svart -
31
= rød -
32
= grønn -
33
= gul -
34
= blå, -
35
= magenta -
36
= cyan -
37
= hvit
-
-
BACKGROUND_COLOR
angir bakgrunnsfargene:-
40
= svart -
41
= rød -
42
= grønn -
43
= gul -
44
= blå, -
45
= magenta -
46
= cyan -
47
= hvit
-
Felter kan utelates fra høyre, så for eksempel .tar 01;31
betyr fet og rød.
XTerm og de fleste andre moderne terminalemulatorer støtter 256 farger.
En XTerm 256-farget forgrunnsfargekode har formen:
38;5;[FOREGROUND_COLOR]
En XTerm 256-farges bakgrunnsfargekode er av form:
48;5;[BACKGROUND_COLOR]
der både FOREGROUND_COLOR
og BACKGROUND_COLOR
nummer området 0-255. En fullstendig liste over fargekoder for 16 og 256 fargemodi vises i skjermbildet nedenfor:
Kommentarer
Svar
Fargene på ls
kan representere tillatelsene , er standardverdiene for noen systemer å vise kataloger der alle har skrivetillatelser med grønn bakgrunn:
Du kan endre fargene ved å redigere $LS_COLORS
-variabelen med dircolors
(fra 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.
Syntaksen er riktignok litt irriterende her, men du kan endre denne fargen ved å opprette en fil med fargene du vil ha og lagre den som ~/.dircolors
:
dircolors -p > ~/.dircolors
Den kommandoen vil skrive ut standardinnstillingene til ~/.dircolors
. Du må da redigere den filen og endre denne linjen:
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
For eksempel å gjøre den svart tekst på rød bakgrunn (se her for en liste over fargekoder):
OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky
Du trenger ikke å ha alle standardinnstillingene , kan du også bare opprette en fil med en enkelt linje, og omdefinere bare den du vil endre. Uansett, når du har opprettet filen, kan du laste den med:
eval "$(dircolors ~/.dircolors)";
Og her er det i aksjon:
For å få det til å skje automatisk, legg til eval
-kommandoen ovenfor til ~/.bashrc
-filen.
Kommentarer
- Standardfargene indikerer ofte at den opprinnelige forfatteren hater oss og øynene våre …
- Takk. Hvorfor skriver du noen ganger ~ / .dirname, og noen ganger ~ / dircolors, og noen ganger ~ / .fargestoffer? skal de være de samme?
- Th anker. Hvorfor
eval "$(dircolors ~/dircolors)";
i stedet for mer direkte måte somdircolors ~/dircolors
? - @Tim fordi dircolors bare skriver ut innstillingene, du trenger å evaluere det for at de skal bli lest.
- for at de skal bli lest av hvem?
Svar
Selv om alle de tekniske svarene stemmer, vil jeg betrakte det som en uformell advarsel, at du har gitt rettigheter til generøs eller kopiering av criss + cross … (oftest gjør vi alle , for å få ting til å fungere i utgangspunktet, ikke sant?)
Hvordan gjøre det blått på svart, …?
En god„ de-greener “for å komme tilbake til rettigheter du mest sannsynlig vil ha, er denne uttalelsen:
chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/
Best forstått hva det gjør, hvis du forstår hensikten med store bokstaver + X „spesiell utførelse“, dvs. se Wikipedia
Det er bare veldig nyttig når det brukes med «+» og vanligvis i kombinasjon med alternativet -R for å gi gruppe eller annen tilgang til et stort katalogtre uten å angi utfør tillatelse til normale filer (for eksempel tekstfiler), noe som normalt ville skje hvis du bare brukte «chmod -R a + rx …
Svar
Her er de tre trinnene jeg brukte for å endre fargene:
Kopier først standardfargene til en fil
dircolors -p > ~/.dircolors
Endre deretter denne filen. Du kan finne noen verdier for farger inne, og her er noen flere:
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
( kilde )
Og til slutt, legg til følgende linje i ~/.bashrc
-filen for at fargene skal lastes automatisk når du åpner en terminal:
eval "dircolors ~/.dircolors" > /dev/null
For ~/.zshrc
:
if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi
Svar
For å raskt løse problemet, (gjør andre skrivbare filer gule på nobg):
LS_COLORS+=":ow=01;33"
Erstatt 33
med 34
for blå på nobg. Enda enklere, å gjøre det nofg på nobg:
LS_COLORS+=:ow=
For å gjøre endringen permanent, legg den til .profilen din:
echo "export LS_COLORS+=":ow=01;33"" >> ~/.profile
Slik viser du ikke-utvidelsesrelaterte regler for LS_COLORS:
echo "$LS_COLORS" | sed "s/:/\n/g" | grep -v "\*."
sed
setter hver regel på en linje og grep
fjerner reglene som begynner med *.".
To utforsk ls
farger på terminalen din, vurder å bruke
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. }
Deretter
LS_COLORS="$C:ow=38;5;250;48;5;025";t
Som nevnt i et annet svar (det av Thomas Nyman), er 38;5;
prefikset for forgrunnen x-term 256-farger, og 48;5;
for bakgrunns x-term 256-farger. 256-farger støttes ikke av alle terminaler.
Se også -Hva betyr de forskjellige fargene i ls? – på AskUbuntu .
Kommentarer
- Jeg fant å slippe
LS_COLORS+=':ow=01;33'
i~/.zshrc
bidro til å deaktivere fargebakgrunn for kataloger i en git-repo.Dette er på en Windows 10-maskin med en Pengwin-WSL-distribusjon. Nå er alle kataloger innen git-repo lesbare.
Svar
Dette betyr at denne mappen har tillatelser hvis du kjører dette:
сhmod og-w AU_LI
det fjerner bgcolor 🙂
Svar
For å fikse dette, prøv ow parameter til LS_COLORS
For eksempel:
~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
Nå legger du til ow (OTHER_WRITABLE
) alternativ
~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
Kommentarer
- Hvis du vil endre fargen via .dir_colors, kan du legge til
OTHER_WRITABLE 34;43
. Takk til: gist.github.com/jmoz/280005/…
Svar
Du kan endre tonen i grønt i Putty for å gjøre teksten lesbar.
Åpne Putty og gå til Window \ Colors, velg «ANSI Green», sett den til en mørkere grønn (R: 0 G: 70 B: 0).
38;5;
starter en xterm 256-farge forgrunnsfargekode.48;5;
starter en xterm 256-farget bakgrunnsfargekode. Cyan i mine dircolors-utdata er38;5;51
ikke36
selv om resultatet er det samme.