Frage Wie ändere ich die Farbe für Verzeichnisse mit ls in der Konsole?


Auf meiner Konsole ist die Farbe für Verzeichnisse so blau, dass es auf einem dunklen Hintergrund schwer zu lesen ist.

Wie kann ich die Farbdefinitionen für ändern? ls?


126
2018-05-15 07:27


Ursprung




Antworten:


Um Ihre Verzeichnisfarben zu ändern, öffnen Sie Ihr ~/.bashrc Datei mit Ihrem Editor

nano ~/.bashrc

und geben Sie am Ende der Datei den folgenden Eintrag ein:

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

Einige schöne Farben (in diesem Fall 0;35 es ist lila) sind:

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

Die erste Zahl ist der Stil (1 = fett), gefolgt von einem Semikolon, und dann die tatsächliche Anzahl der Farbe, mögliche Stile (Effekte) sind:

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)

Die möglichen Hintergründe:

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 möglichen Farben:

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

Diese können sogar kombiniert werden, so dass ein Parameter wie folgt aussieht:

di=1;4;31;42

In Ihrer LS_COLORS-Variable würden Verzeichnisse in fett unterstrichenem roten Text mit grünem Hintergrund erscheinen!

Um all diese Farben und Stile in Ihrem Terminal zu testen, können Sie einen der folgenden verwenden:

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

Sie können auch andere Arten von Dateien ändern, wenn Sie den Befehl ls verwenden, indem Sie jede Art mit

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

Eine vollständigere Liste finden Sie unter Bigsoft - Konfigurieren von LS_COLORS.

Bei einigen Distributionen möchten Sie möglicherweise auch die Hintergrundfarbe für ändern ow "(OTHER_WRITABLE) deren Standard nicht lesbar ist "zum Beispiel auf nicht fettem blauem Text auf grünem Hintergrund.

Sie könnten zum Beispiel verwenden LS_COLORS="$LS_COLORS:di=1;33" am Ende deines .bashrc Datei, um einen schönen lesbaren fettgedruckten Text auf schwarzem Hintergrund zu erhalten.

Nachdem Sie Ihre .bashrc-Datei geändert haben, müssen Sie die Shell neu starten oder ausführen, um die Änderungen wirksam werden zu lassen source ~/.bashrc.

Hinweis: Sie können mehrere Befehle mit einem kombinieren Doppelpunkt, beispielsweise

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

Quelle:


192
2018-05-15 07:35



Das funktioniert gut, danke. Ich persönlich fand es besser, es festzulegen LS_COLORS=$LS_COLORS:'di=1;44:' ; export LS_COLORS welches die Verzeichnisse in fettem Weiß über blauem Hintergrund zeigt. - isapir
Das scheint bei mir nicht zu funktionieren. Es sieht so aus, als ob irgendwo eine andere Konfigurationsdatei existiert, die überschreibt .bashrc - Manche Farben funktionieren, andere sehen anders aus. Ordner sind zum Beispiel grün statt blau, aber Dateien sehen korrekt aus. Was könnte es sein? - Nearoo
Überprüfen Sie, ob Sie bash oder sh verwenden und überprüfen Sie auch Ihre. Profile-Datei in Ihrem Home-Verzeichnis. und global /etc/bash.bashrc - rubo77
Wahrscheinlich möchten Sie andere beschreibbare und andere schreibbare Verzeichnisse ändern. Probieren Sie etwas mehr wie LS_COLORS=$LS_COLORS:'tw=01;35:ow=01;35:' ; export LS_COLORS - Charles L.
das funktionierte für ls, aber wie ändere ich die Farbe des Verzeichnisses, in dem ich mich befinde, vor dem # in der cmd-Eingabeaufforderung? - Gaia


Sehr einfach. Fügen Sie diese drei Zeilen zu ~ / .bashrc hinzu

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

Wenn Sie die Änderungen in einer laufenden Bash-Sitzung anwenden möchten, führen Sie Folgendes aus:

source ~/.bashrc

26
2017-08-11 13:49



Das ist das Einzige, was für mich funktioniert hat. - solalito


LS_COLORS

Dies ist eine Sammlung von Erweiterungen: Farbzuordnungen, die als Umgebungsvariable LS COLORS verwendet werden können.


3
2018-05-19 22:35



interessant, aber ich kann das nicht in ksh machen. - Herman Toothrot


Zusätzlich zu Hegazi's Antwort können Sie die Verzeichnisfarbe und viele andere Farben mit dem Befehl dircolors steuern. Sie können eine Konfigurationsdatei erstellen, die gut dokumentiert ist.

Sie können eine .dircolor-Datei in Ihrem Home-Verzeichnis wie folgt erstellen:

dircolors -p > ~/.dircolors

Dann fügen Sie in Ihrer ~ / .bashrc-Datei die Zeilen hinzu

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

Dadurch wird eine $ LS_COLORS-Variable für bash erstellt. Das Flag -c wird gesetzt, wenn für csh. Außerdem wird der Befehl ls so gekennzeichnet, dass er in Farbe angezeigt wird.

Bearbeiten Sie den Wert des DIR-Attributs wie oben in der Dateifarbe ~ / .dircolor, um die Farbe des Verzeichnisses (oder eines der anderen eingeschlossenen Dateitypen für andere Farben) zu ändern. Sie können auch die Farben bestimmter Dateien ändern oder eigene definieren.


2
2018-03-07 20:25





Das ist mein Ansatz für ls Befehl mit häufig verwendeten Optionen:

füge die folgenden Zeilen in eine Datei namens ~ / .alias ein

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"

füge die folgenden Zeilen in ~ / .bashrc ein

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

0
2017-08-12 05:33



Sie müssen nur hinzufügen --color=auto zum ls Alias ​​- die anderen Aliase übernehmen die Einstellung - Stuart Cardall


Das --color=auto Option funktioniert nicht für mich mit iTerm2 auf meinem Mac. Das -GOption funktioniert aber. Ich habe den folgenden Alias ​​in meinen ~/.profile und jetzt Verzeichnisse sind farbig und haben eine nachlaufende / angehängt:

alias ls='ls -F -G'

0
2017-11-06 16:00