Er zijn twee directories getoond door “ls”. Normaal gesproken zijn mappen overal blauw op een zwarte achtergrond. Maar de eerste is blauw op groen en onmogelijk te lezen. Waarom is dit? Hoe maak je het blauw op zwart, of op zijn minst iets lichts op iets donkers?
Dit is op Ubuntu 12.04, met bash in Gnome Terminal. In Konsole is het blauw iets donkerder en leesbaar, hoewel het veel beter zou kunnen zijn.
Antwoord
Behalve inkleuren bestanden op basis van hun type (turkoois voor audiobestanden, helderrood voor archieven en gecomprimeerde bestanden en paars voor afbeeldingen en videos), ls
kleurt ook bestanden en mappen op basis van hun kenmerken:
- Zwarte tekst met groene achtergrond geeft aan dat een directory beschrijfbaar is door anderen, behalve de gebruiker en groep die de eigenaar is, en dat de sticky bit is ingesteld (
o+w, +t
) . - Blauwe tekst met groene achtergrond geeft aan dat een directory beschrijfbaar is door anderen, behalve de gebruiker en groep die de eigenaar is, en dat niet de sticky bit is ingesteld (
o+w, -t
).
Stephano Palazzo op Ask Ubuntu heeft deze zeer leerzame afbeelding gemaakt over de verschillende attribuutkleuren:
Zoals terdon opmerkte, kunnen de kleurinstellingen worden gewijzigd via dircolors
. Een lijst met de verschillende kleurinstellingen is toegankelijk met dircolors --print-database
.
Elke regel met uitvoer, zoals BLK 40;33;01
, heeft de volgende vorm:
[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
-
TARGET
geeft het doel aan voor de kleurregel -
TEXT_STYLE
geeft de tekststijl aan:-
00
= geen -
01
= vet -
04
= onderstrepingsteken -
05
= blink -
07
= reverse, -
08
= verborgen
-
-
FOREGROUND_COLOR
geeft de voorgrondkleur aan:-
30
= zwart -
31
= rood -
32
= groen -
33
= geel -
34
= blauw, -
35
= magenta -
36
= cyaan -
37
= wit
-
-
BACKGROUND_COLOR
geeft de achtergrondkleuren aan:-
40
= zwart -
41
= rood -
42
= groen -
43
= geel -
44
= blauw, -
45
= magenta -
46
= cyaan -
47
= wit
-
Velden kunnen worden weggelaten vanaf de rechterkant, dus .tar 01;31
betekent bijvoorbeeld vet en rood.
XTerm en de meeste andere moderne terminalemulators ondersteunen 256 kleuren.
Een XTerm 256-kleuren voorgrondkleurcode heeft de volgende vorm:
38;5;[FOREGROUND_COLOR]
Een XTerm 256-kleuren achtergrondkleurcode is van de form:
48;5;[BACKGROUND_COLOR]
waarbij zowel FOREGROUND_COLOR
als BACKGROUND_COLOR
een nummer het bereik 0-255. Een volledige lijst met kleurcodes voor de 16 en 256 kleurmodi wordt weergegeven in de onderstaande schermafbeelding:
Opmerkingen
Antwoord
De kleuren van ls
kunnen de toestemmingen vertegenwoordigen , de standaardinstelling voor sommige systemen is om mappen te tonen waar iedereen schrijfrechten heeft met een groene achtergrond:
U kunt de kleuren wijzigen door uw $LS_COLORS
variabele te bewerken met dircolors
(van 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.
De syntaxis is hier weliswaar een beetje vervelend, maar je kunt deze kleur wijzigen door een bestand te maken met de kleuren die je wilt en het op te slaan als ~/.dircolors
:
dircolors -p > ~/.dircolors
Met dat commando worden de standaardinstellingen afgedrukt in ~/.dircolors
. U moet dan dat bestand bewerken en deze regel wijzigen:
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
Om er bijvoorbeeld zwarte tekst op een rode achtergrond van te maken (zie hier voor een lijst met kleurcodes):
OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky
U hoeft niet alle standaardinstellingen te hebben , je kunt ook gewoon een bestand maken met een enkele regel, waarbij je alleen het bestand dat je wilt wijzigen opnieuw definieert. Hoe dan ook, als je het bestand eenmaal hebt gemaakt, laad je het met:
eval "$(dircolors ~/.dircolors)";
En hier is het in actie:
Om dat automatisch te laten gebeuren, voegt u de eval
commando hierboven naar uw ~/.bashrc
bestand.
Reacties
- De standaardkleuren lijken vaak aan te geven dat de oorspronkelijke auteur ons en onze ogen haat …
- Bedankt. Waarom schrijf je soms ~ / .dirname, en soms ~ / dircolors, en soms ~ / .dircolors? moeten ze hetzelfde zijn?
- Th anks. Waarom
eval "$(dircolors ~/dircolors)";
in plaats van een directere manier zoalsdircolors ~/dircolors
? - @Tim omdat dircolors alleen de instellingen afdrukt, moet het worden geëvalueerd zodat ze kunnen worden gelezen.
- zodat ze kunnen worden gelezen door wie?
Antwoord
Hoewel alle technische antwoorden waar zijn, zou ik het een beetje een informele waarschuwing vinden, dat je een beetje rechten hebt uitgedeeld om royaal of kriskras + kruis te kopiëren … (meestal doen we dat allemaal , om dingen aanvankelijk werkend te krijgen, hè?)
Hoe maak je het blauw op zwart, …?
Een goede” ontgroening “om terug te gaan naar de rechten die u waarschijnlijk wilt, is deze verklaring:
chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/
Begrijp het beste wat het doet, als u het doel van hoofdletters + X „special execute“ begrijpt, dwz zie Wikipedia
Het is alleen erg handig wanneer het wordt gebruikt met “+” en meestal in combinatie met de -R optie om een groep of andere toegang te geven tot een grote mappenboom zonder uitvoeringsmachtiging in te stellen voor normale bestanden (zoals tekstbestanden), wat normaal zou gebeuren als je gewoon “chmod -R a + rx …
Antwoord
Hier zijn de 3 stappen die ik heb gebruikt om de kleuren te veranderen:
Kopieer eerst de standaardkleuren naar een bestand
dircolors -p > ~/.dircolors
Wijzig vervolgens dit bestand. U kunt enkele waarden voor kleuren binnenin vinden, en hier zijn er nog enkele:
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
( source )
En tot slot, voeg de volgende regel toe aan uw ~/.bashrc
-bestand zodat de kleuren automatisch worden geladen wanneer u een terminal opent:
eval "dircolors ~/.dircolors" > /dev/null
Voor ~/.zshrc
:
if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi
Antwoord
Om het probleem snel op te lossen, (maak andere beschrijfbare bestanden geel op nobg):
LS_COLORS+=":ow=01;33"
Vervang 33
door 34
voor blauw op nobg. Nog eenvoudiger, om het nofg te maken op nobg:
LS_COLORS+=:ow=
Om uw wijziging permanent te maken, voegt u deze toe aan uw .profile:
echo "export LS_COLORS+=":ow=01;33"" >> ~/.profile
Om de niet-extensie gerelateerde regels van LS_COLORS te bekijken:
echo "$LS_COLORS" | sed "s/:/\n/g" | grep -v "\*."
sed
plaatst elke regel op één regel en grep
verwijdert de regels die beginnen met *.".
Aan verken de ls
kleuren op uw terminal, overweeg om
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. }
te gebruiken en vervolgens
LS_COLORS="$C:ow=38;5;250;48;5;025";t
Zoals vermeld in een ander antwoord (dat van Thomas Nyman), is 38;5;
het voorvoegsel voor voorgrond x-term 256-kleuren, en 48;5;
voor achtergrond x-term 256-kleuren. 256-kleuren wordt echter niet door alle terminals ondersteund.
Zie ook -Wat betekenen de verschillende kleuren in ls? – op AskUbuntu .
Reacties
- Ik vond het neerzetten van
LS_COLORS+=':ow=01;33'
in mijn~/.zshrc
hielp bij het uitschakelen van kleur-achtergrond voor mappen in een git-repo.Dit staat op een Windows 10-machine met een Pengwin-WSL-distributie. Nu zijn alle mappen in git-repo leesbaar.
Antwoord
Dit betekent dat deze map permissies heeft als je voert dit uit:
сhmod og-w AU_LI
het zal verwijderen bgcolor 🙂
Antwoord
Om dit op te lossen, probeer de ow parameter naar de LS_COLORS
Bijvoorbeeld:
~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
Voeg nu de ow (OTHER_WRITABLE
) optie
~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
Reacties
- Als je de kleur wilt wijzigen via .dir_colors, kun je
OTHER_WRITABLE 34;43
toevoegen. Met dank aan: gist.github.com/jmoz/280005/…
Answer
Je kunt de toon van groen in Putty veranderen om de tekst leesbaar te maken.
Open Putty en ga naar Window \ Colors, selecteer “ANSI Green”, zet het op donkerder groen (R: 0 G: 70 B: 0).
38;5;
start een xterm 256-kleuren voorgrondkleurcode.48;5;
start een xterm 256-kleuren achtergrondkleurcode. Cyaan in mijn dircolors-uitvoer is38;5;51
niet36
hoewel het resultaat hetzelfde is.