Vraag Hoe verander ik de kleur voor mappen met ls in de console?


Op mijn console is de kleur voor mappen zo blauw dat het moeilijk te lezen is op een donkere achtergrond.

Hoe kan ik de kleurdefinities wijzigen voor ls?


126
2018-05-15 07:27


oorsprong




antwoorden:


Als u de kleuren van uw directory wilt wijzigen, opent u uw ~/.bashrc bestand met uw editor

nano ~/.bashrc

en maak de volgende invoer aan het einde van het bestand:

LS_COLORS=$LS_COLORS:'di=0;35:' ; export LS_COLORS

Enkele mooie kleurkeuzes (in dit geval 0;35 het is paars) zijn:

Blue = 34
Green = 32
Light Green = 1;32
Cyan = 36
Red = 31
Purple = 35
Brown = 33
Yellow = 1;33
Bold White = 1;37
Light Grey = 0;37
Black = 30
Dark Grey= 1;30

Het eerste nummer is de stijl (1 = vetgedrukt), gevolgd door een puntkomma, en het werkelijke aantal van de kleur, mogelijke stijlen (effecten) zijn:

0   = default colour
1   = bold
4   = underlined
5   = flashing text (disabled on some terminals)
7   = reverse field (exchange foreground and background color)
8   = concealed (invisible)

De mogelijke achtergronden:

40  = black background
41  = red background
42  = green background
43  = orange background
44  = blue background
45  = purple background
46  = cyan background
47  = grey background
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
107 = white background

Alle mogelijke kleuren:

31  = red
32  = green
33  = orange
34  = blue
35  = purple
36  = cyan
37  = grey
90  = dark grey
91  = light red
92  = light green
93  = yellow
94  = light blue
95  = light purple
96  = turquoise
97  = white

Deze kunnen zelfs worden gecombineerd, zodat een parameter zoals:

di=1;4;31;42

in uw LS_COLORS variabele zouden directories verschijnen in vetgedrukte onderstreepte rode tekst met een groene achtergrond!

Om al deze kleuren en stijlen in uw terminal te testen, kunt u een van de volgende gebruiken:

for i in 00{2..8} {0{3,4,9},10}{0..7}
do echo -e "$i \e[0;${i}mSubdermatoglyphic text\e[00m  \e[1;${i}mSubdermatoglyphic text\e[00m"
done

for i in 00{2..8} {0{3,4,9},10}{0..7}
do for j in 0 1
   do echo -e "$j;$i \e[$j;${i}mSubdermatoglyphic text\e[00m"
   done
done

U kunt ook andere soorten bestanden wijzigen wanneer u de opdracht ls gebruikt door elke soort te definiëren met:

bd = (BLOCK, BLK)   Block device (buffered) special file
cd = (CHAR, CHR)    Character device (unbuffered) special file
di = (DIR)  Directory
do = (DOOR) [Door][1]
ex = (EXEC) Executable file (ie. has 'x' set in permissions)
fi = (FILE) Normal file
ln = (SYMLINK, LINK, LNK)   Symbolic link. If you set this to ‘target’ instead of a numerical value, the color is as for the file pointed to.
mi = (MISSING)  Non-existent file pointed to by a symbolic link (visible when you type ls -l)
no = (NORMAL, NORM) Normal (non-filename) text. Global default, although everything should be something
or = (ORPHAN)   Symbolic link pointing to an orphaned non-existent file
ow = (OTHER_WRITABLE)   Directory that is other-writable (o+w) and not sticky
pi = (FIFO, PIPE)   Named pipe (fifo file)
sg = (SETGID)   File that is setgid (g+s)
so = (SOCK) Socket file
st = (STICKY)   Directory with the sticky bit set (+t) and not other-writable
su = (SETUID)   File that is setuid (u+s)
tw = (STICKY_OTHER_WRITABLE)    Directory that is sticky and other-writable (+t,o+w)
*.extension =   Every file using this extension e.g. *.rpm = files with the ending .rpm

Een volledigere lijst is beschikbaar op Bigsoft - Configureren van LS_COLORS.

Op sommige distributies wilt u misschien ook de achtergrondkleur wijzigen ow "(OTHER_WRITABLE) waarvan de standaardinstelling niet leesbaar is "bijvoorbeeld voor niet-vette blauwe tekst op een groene achtergrond.

Je zou bijvoorbeeld kunnen gebruiken LS_COLORS="$LS_COLORS:di=1;33" aan het einde van uw .bashrc bestand, om een ​​mooie leesbare vetgedrukte oranje tekst op een zwarte achtergrond te krijgen.

Nadat u uw .bashrc-bestand hebt gewijzigd, moet u de shell opnieuw opstarten of uitvoeren als u de wijzigingen wilt toepassen source ~/.bashrc.

Opmerking: u kunt meer opdrachten combineren met een dikke darm, bijvoorbeeld

LS_COLORS=$LS_COLORS:'di=1;33:ln=36' ; export LS_COLORS; ls

Bron:


192
2018-05-15 07:35



Dit werkt goed, bedankt. Ik persoonlijk vond het beter om te stellen LS_COLORS=$LS_COLORS:'di=1;44:' ; export LS_COLORS die de mappen vetgedrukt wit over een blauwe achtergrond laat zien. - isapir
Dit lijkt niet voor mij te werken. Het lijkt erop dat er ergens een ander configuratiebestand is dat overschreven wordt .bashrc - sommige kleuren werken, andere zien er anders uit. Mappen zijn bijvoorbeeld groen in plaats van blauw, maar bestanden zien er correct uit. Wat kan het zijn? - Nearoo
controleer of u bash of sh gebruikt en controleer ook uw .profile-bestand in uw homedirectory. en wereldwijd /etc/bash.bashrc - rubo77
U wilt waarschijnlijk andere beschrijfbare en plakkerige andere beschrijfbare mappen wijzigen. Probeer iets meer zoals LS_COLORS=$LS_COLORS:'tw=01;35:ow=01;35:' ; export LS_COLORS - Charles L.
dat werkte voor ls, maar hoe verander ik de kleur van de map waarin ik ben, vóór de # in de cmd-prompt? - Gaia


Erg makkelijk. Voeg deze drie regels toe aan ~ / .bashrc

$ vi ~/.bashrc
export LS_OPTIONS='--color=auto'
eval "$(dircolors -b)"
alias ls='ls $LS_OPTIONS'

Als u de wijzigingen wilt toepassen in een actieve bash-sessie, voert u het volgende uit:

source ~/.bashrc

26
2017-08-11 13:49



Dit is het enige dat voor mij werkte. - solalito


LS_COLORS

Dit is een verzameling van uitbreidingen: kleurtoewijzingen, geschikt om te gebruiken als uw LS COLOUR-omgevingsvariabele.


3
2018-05-19 22:35



interessant, maar ik kan dit niet laten werken in ksh. - Herman Toothrot


Naast het antwoord van Hegazi, kun je de mapkleur en een heleboel andere kleuren daadwerkelijk besturen met de opdracht dircolors. U kunt een configuratiebestand maken dat goed gedocumenteerd is.

U kunt als volgt een .dircolor-bestand in uw basismap maken:

dircolors -p > ~/.dircolors

Voeg vervolgens in je ~ / .bashrc-bestand de regels toe

eval "`dircolors -b ~/.dircolors`"
alias ls='ls --color=auto'

Hiermee wordt een $ LS_COLORS variabele voor bash gemaakt. De vlag -c stelt in als voor csh. Het markeert ook het ls-commando om in kleur weer te geven.

Bewerk de waarde van het kenmerk DIR zoals hierboven in de bestandskleur ~ / .dircolor om de kleur van de map (of een van de andere opgenomen bestandstypen voor andere kleuren) te wijzigen. U kunt ook de kleuren van specifieke bestanden wijzigen of uw eigen kleuren definiëren.


2
2018-03-07 20:25





Het is mijn aanpak voor ls-commando met veelgebruikte opties:

voeg de volgende regels toe aan een bestand met de naam ~ / .alias

alias ll='ls -lhF --color=auto'
alias llt='ls -lht --color=auto'
alias lla='ls -alF --color=auto'
alias la='ls -A --color=auto'
alias l='ls -CF --color=auto'
alias ls="ls --color=auto"

voeg de volgende regels toe aan ~ / .bashrc

if [ -f ~/.alias ]; then
    . ~/.alias
fi

0
2017-08-12 05:33



je hoeft alleen maar toe te voegen --color=auto naar de ls alias - de andere aliassen met de instelling - Stuart Cardall


De --color=auto optie werkt niet voor mij met iTerm2 op mijn Mac. De -Goptie werkt echter. Ik heb de volgende alias in mijn ~/.profile en mappen zijn nu gekleurd en hebben een volgnummer / toegevoegd:

alias ls='ls -F -G'

0
2017-11-06 16:00