Es gibt zwei Verzeichnisse, die von „ls“ angezeigt werden. Normalerweise sind Verzeichnisse überall blau auf schwarzem Hintergrund. Aber das erste ist blau auf grün und unmöglich zu lesen. Warum ist das so? Wie kann man es blau auf schwarz machen, oder zumindest etwas Helles auf etwas Dunklem?
Dies ist auf Ubuntu 12.04, mit Bash im Gnome Terminal. In der Konsole ist das Blau etwas dunkler und lesbar, könnte aber viel besser sein.
Antwort1
Außer der Farbgebung von Dateien auf Basis ihres Typs (türkis für Audiodateien, leuchtend rot für Archive und komprimierte Dateien und violett für Bilder und Videos) werden ls
Dateien und Verzeichnisse auch auf Basis ihrer Attribute gefärbt:
- Schwarzer Text auf grünem Hintergrund zeigt an, dass ein Verzeichnis für andere Personen als den Benutzer und die Gruppe, denen es gehört, beschreibbar ist und dass das Sticky Bit gesetzt ist (
o+w, +t
). - Blauer Text mit grünem Hintergrund zeigt an, dass ein Verzeichnis von anderen als dem Benutzer und der Gruppe, die es besitzen, beschreibbar ist undnichthabe das Sticky Bit gesetzt (
o+w, -t
).
Stephano PalazzobeiFragen Sie Ubuntuhat dieses sehr lehrreiche Bild über die verschiedenen Attributfarben gemacht:
AlsterdonWie bereits erwähnt, können die Farbeinstellungen geändert werden überdircolors
Eine Liste der verschiedenen Farbeinstellungen kann mit aufgerufen werden dircolors --print-database
.
Jede Ausgabezeile, beispielsweise BLK 40;33;01
, hat die Form:
[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
TARGET
gibt das Ziel für die Farbregel anTEXT_STYLE
gibt den Textstil an:00
= keine01
= fett04
= Unterstrich05
= blink07
= rückwärts,08
= verdeckt
FOREGROUND_COLOR
gibt die Vordergrundfarbe an:30
= schwarz31
= rot32
= grün33
= gelb34
= blau,35
= Magenta36
= Cyan37
= weiß
BACKGROUND_COLOR
gibt die Hintergrundfarben an:40
= schwarz41
= rot42
= grün43
= gelb44
= blau,45
= Magenta46
= Cyan47
= weiß
Von rechts beginnend können Felder weggelassen werden, also zum Beispiel .tar 01;31
fett und rot.
XTerm und die meisten anderen modernen Terminalemulatoren unterstützen 256 Farben.
Ein XTerm-Vordergrundfarbcode mit 256 Farben hat die Form:
38;5;[FOREGROUND_COLOR]
Ein XTerm-Hintergrundfarbcode mit 256 Farben hat die Form:
48;5;[BACKGROUND_COLOR]
wobei sowohl FOREGROUND_COLOR
als auch BACKGROUND_COLOR
eine Zahl im Bereich 0-255 ist. Eine vollständige Liste der Farbcodes für die 16- und 256-Farbmodi finden Sie im folgenden Screenshot:
Antwort2
Die Farben ls
können die Berechtigungen darstellen. Bei manchen Systemen werden Verzeichnisse, für die jeder Schreibberechtigung hat, standardmäßig mit einem grünen Hintergrund angezeigt:
Sie können die Farben ändern, indem Sie Ihre $LS_COLORS
Variable mit dircolors
(von man ls
) bearbeiten:
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.
Die Syntax ist hier zugegebenermaßen etwas nervig, aber Sie können diese Farbe ändern, indem Sie eine Datei mit den gewünschten Farben erstellen und sie wie folgt speichern ~/.dircolors
:
dircolors -p > ~/.dircolors
Dieser Befehl druckt die Standardwerte in ~/.dircolors
. Anschließend müssen Sie diese Datei bearbeiten und diese Zeile ändern:
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
Um beispielsweise schwarzen Text auf rotem Hintergrund zu erstellen (sieheHierfür eine Liste der Farbcodes):
OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky
Sie müssen nicht alle Standardwerte haben, Sie können auch einfach eine Datei mit einer einzigen Zeile erstellen und nur die Werte neu definieren, die Sie ändern möchten. Wenn Sie die Datei erstellt haben, laden Sie sie mit:
eval "$(dircolors ~/.dircolors)";
Und hier ist es in Aktion:
Damit dies automatisch geschieht, fügen Sie eval
Ihrer ~/.bashrc
Datei den obigen Befehl hinzu.
Antwort3
tldr; Wie kann man das einfach beheben?
So beheben Sie das Problem schnell:
LS_COLORS+=':ow=01;33'
- Lässt andere beschreibbare Dateien auf nobg gelb erscheinen
- Bearbeiten Sie Ihr Shell-Profil (z. B.
~/.bashrc
,~/.profile
, usw.), um dies dauerhaft zu machen.
Mehr Details:
Ersetzen Sie es 33
durch 34
für blue
auf . Noch einfacher ist es, es auf nobg
zu setzen :nofg
nobg
LS_COLORS+=:ow=
Um Ihre Änderung dauerhaft zu machen, hängen Sie sie an Ihr .profile an:
echo "export LS_COLORS+=':ow=01;33'" >> ~/.profile
So zeigen Sie die nicht erweiterungsbezogenen Regeln von an LS_COLORS
:
echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'
sed
setzt jede Regel in eine Zeile und grep
entfernt die Regeln, die mit*.'.
Um die ls
Farben auf Ihrem Terminal zu erkunden, verwenden Sie
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.
}
Dann
LS_COLORS="$C:ow=38;5;250;48;5;025";t
Wie in einer anderen Antwort (der von Thomas Nyman) angegeben, 38;5;
beträgt das Präfix für Vordergrund-X-Term 256 Farben und 48;5;
für Hintergrund-X-Term 256 Farben. 256 Farben werden jedoch nicht von allen Terminals unterstützt.
Siehe auch-Was bedeuten die unterschiedlichen Farben in ls?-auf AskUbuntu.
Antwort4
Hier sind die 3 Schritte, die ich zum Ändern der Farben verwendet habe:
Kopieren Sie zunächst die Standardfarben in eine Datei
dircolors -p > ~/.dircolors
Dann ändern Sie diese Datei. Darin finden Sie einige Werte für Farben, und hier sind noch ein paar mehr:
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
(Quelle)
Und schließlich fügen Sie Ihrer ~/.bashrc
Datei die folgende Zeile hinzu, damit die Farben beim Öffnen eines Terminals automatisch geladen werden:
eval 'dircolors ~/.dircolors' > /dev/null
Für ~/.zshrc
:
if [[ -f ~/.dircolors ]] ; then
eval $(dircolors -b ~/.dircolors)
elif [[ -f /etc/DIR_COLORS ]] ; then
eval $(dircolors -b /etc/DIR_COLORS)
fi