Wenn Sie die ls
Befehl in Bash werden Sie feststellen, dass die angezeigten Verzeichnisse und Dateien entsprechend ihrem Typ eingefärbt sind. Sie können Ihr eigenes Farbschema anpassen, um verschiedene Textfarben, Hintergrundfarben und Formatierungen wie Fettdruck und Unterstreichung auszuwählen.
Wie das funktioniert
Das Farbschema wird in der Variablen LS_COLORS gespeichert. Um Ihr aktuelles Farbschema anzuzeigen, können Sie die Bash anweisen, den Inhalt der Variablen zu drucken:
echo $LS_COLORS
Sie sehen eine lange Liste von Dateitypen und Nummerncodes. Wir erklären Ihnen, wie Sie eine solche Liste selbst erstellen.

Bevor Sie damit herumspielen, empfehlen wir, den aktuellen Inhalt der Variablen LS_COLORS in einer anderen Variablen zu speichern. Auf diese Weise können Sie die Standardeinstellungen schnell wiederherstellen, ohne sich von der Shell abzumelden und wieder anzumelden oder das Terminalfenster zu schließen und erneut zu öffnen. Um den aktuellen Inhalt der Variablen LS_COLORS in einer neuen Variablen namens ORIGINAL zu speichern, führen Sie Folgendes aus:
ORIGINAL=$LS_COLORS

Sie können jederzeit den folgenden Befehl ausführen, um Ihre Änderungen rückgängig zu machen und die Standardfarben wiederherzustellen:
LS_COLORS=$ORIGINAL
Ihre Änderungen sind immer temporär, bis Sie eine Datei bearbeiten, um sie zu Ihren neuen Standardeinstellungen zu machen. Sie können sich jederzeit ab- und wieder anmelden oder ein Terminalfenster schließen und erneut öffnen, um die Farben auf die Standardeinstellungen zurückzusetzen. Dies macht es jedoch einfach, dies mit einem einzigen, schnellen Befehl zu tun.
So legen Sie benutzerdefinierte Farben fest
Die Variable LS_COLORS enthält eine Liste von Dateitypen zusammen mit den zugehörigen Farbcodes. Die Standardliste ist lang, da sie für verschiedene Dateitypen unterschiedliche Farben angibt.
Beginnen wir mit einem einfachen Beispiel, um zu demonstrieren, wie dies funktioniert. Nehmen wir an, wir möchten die Farbe der Verzeichnisse von der Standardfarbe fett blau in fett rot ändern. Dazu können wir den folgenden Befehl ausführen:
LS_COLORS="di=1;31"
Das di=1;31
bisschen erzählt ls
dass Verzeichnisse (di
) sind (=
) Fett gedruckt (1;
) rot (31
).

Dies ist jedoch nur eine sehr einfache LS_COLORS-Variable, die Verzeichnisse als eine Farbe definiert und jeden anderen Dateityp als Standardfarbe belässt. Nehmen wir an, wir möchten Dateien mit der Dateierweiterung .desktop ebenfalls in eine unterstrichene Cyan-Farbe umwandeln. Dazu können wir den folgenden Befehl ausführen:
LS_COLORS="di=1:31:*.desktop=4;36"
Das sagt ls
dass Verzeichnisse (di
) sind (=
) Fett gedruckt (1;
) rot (31
) und (:
) jede Datei mit der Endung .desktop (*.desktop
) ist (=
) unterstrichen (4;
) Cyan (36
).

Dies ist der Prozess zum Zusammenstellen Ihrer Liste von Dateitypen und Farben. Geben Sie beliebig viele in der Form filetype=color an und trennen Sie sie jeweils durch einen Doppelpunkt (:).
Um Ihre eigene Liste zusammenzustellen, müssen Sie nur die Liste der Farbcodes und Dateitypcodes kennen. Dabei werden dieselben numerischen Farbcodes verwendet, die Sie beim Ändern der Farbe in Ihrer Bash-Eingabeaufforderung verwenden.
Hier ist die Liste der Farbcodes für Vordergrundtext:
- Schwarz: 30
- Blau: 34
- Cyan: 36
- Grün: 32
- Lila: 35
- Rot: 31
- Weiß: 37
- Gelb: 33
Da gelber Text beispielsweise der Farbcode 33 ist, würden Sie verwenden di=33
um Verzeichnisse gelb zu machen.

Hier ist die Liste der Textfarbattribute:
- Normaler Text: 0
- Fetter oder heller Text: 1 (Das hängt vom Terminalemulator ab.)
- Schwacher Text: 2
- Unterstrichener Text: 4
- Blinkender Text: 5 (Dies funktioniert bei den meisten Terminalemulatoren nicht.)
- Umgekehrter Text: 7 (Dadurch werden die Vorder- und Hintergrundfarben invertiert, sodass Sie schwarzen Text auf weißem Hintergrund sehen, wenn der aktuelle Text weißer Text auf schwarzem Hintergrund ist.)
- Versteckter Text: 8
Wenn Sie ein Attribut oder mehr als einen Farbcode angeben, trennen Sie die Liste der Codes durch ein Semikolon (;). Sie müssen für normalen Text keine 0 angeben, da normaler Text verwendet wird, wenn Sie hier kein Attribut angeben.
Da beispielsweise fetter Text der Farbcode 1 und gelber Text der Farbcode 33 entspricht, würden Sie verwenden di=1;33
um Verzeichnisse fett gelb zu machen. Sie können auch mehr als ein Attribut angeben. Du könntest zum Beispiel verwenden di=1;4;33
um Verzeichnisse fett und gelb unterstrichen zu machen.

Hier ist die Liste der Hintergrundfarbcodes:
- Schwarzer Hintergrund: 40
- Blauer Hintergrund: 44
- Cyan-Hintergrund: 46
- Grüner Hintergrund: 42
- Lila Hintergrund: 45
- Roter Hintergrund: 41
- Weißer Hintergrund: 47
- Gelber Hintergrund: 43
Da ein blauer Hintergrund beispielsweise der Farbcode 44 entspricht, verwenden Sie di=44
einen blauen Hintergrund für Verzeichnisse verwenden. Sie können auch einen Hintergrundfarbcode, einen Vordergrundfarbcode und beliebig viele Attribute kombinieren. Beispielsweise, di=1;4;33;44
würde Ihnen fetten, unterstrichenen gelben Text auf blauem Hintergrund geben.

Hier ist die Liste der Dateitypcodes:
- Verzeichnis: di
- Datei: fi
- Symbolischer Link: ln
- Named Pipe (FIFO): mehr
- Buchse: so
- Gerät blockieren: bd
- Zeichengerät: CD
- Verwaister symbolischer Link (zeigt auf eine Datei, die nicht mehr existiert): oder
- Fehlende Datei (eine fehlende Datei, auf die ein verwaister symbolischer Link verweist): mi
- Ausführbare Datei (hat die Berechtigung „x“): ex
- *.extension: Jede Datei, die mit einer von Ihnen angegebenen Erweiterung endet. Verwenden Sie beispielsweise *.txt für Dateien mit der Endung .txt, *.mp3 für Dateien mit der Endung .mp3, *.desktop für Dateien mit der Endung .desktop oder alles andere, was Sie möchten. Sie können beliebig viele verschiedene Dateierweiterungen angeben.
Geben Sie beliebig viele verschiedene Arten von Dateitypcodes mit beliebig vielen verschiedenen Farben an, getrennt durch das Zeichen :. Wiederholen Sie diesen Vorgang, um Ihre LS_COLORS-Variable zusammenzustellen.
Angenommen, Sie möchten fetten lila Text für Verzeichnisse, unterstrichenen roten Text für ausführbare Dateien und fetten grünen Text auf rotem Hintergrund für .mp3-Dateien verwenden. Wenn Sie die Dateitypcodes und Farbcodes aus den obigen Listen zusammenstellen, erhalten Sie:
LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"

So legen Sie Ihre neuen Standardfarben fest
Sie haben jetzt eine benutzerdefinierte LS_COLORS-Variable, die in der aktuellen Bash-Sitzung funktioniert. Sie möchten es jedoch wahrscheinlich dauerhaft machen, damit es automatisch verwendet wird, wenn Sie eine neue Bash-Sitzung starten, ohne dass Sie sich daran erinnern müssen.
Sie können Ihre benutzerdefinierte LS_COLORS-Variable – und jede andere gewünschte Bash-Variable – festlegen, indem Sie sie der .bashrc-Datei Ihres Benutzerkontos hinzufügen. Diese Datei befindet sich unter ~/.bashrc. Wenn Ihr Benutzername also bob ist, finden Sie ihn unter /home/bob/.bashrc. Es gibt auch andere Möglichkeiten, Umgebungsvariablen zu setzen, aber dies ist einfach.
Öffnen Sie diese Datei zunächst in Ihrem bevorzugten Texteditor. Wir verwenden hier nano als Beispiel, aber Sie können vi, emacs oder alles andere verwenden, was Sie möchten.
nano ~/.bashrc

Fügen Sie Ihre benutzerdefinierte LS_COLORS-Variable in eine neue Zeile am Ende der Datei ein, wie folgt:
LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"
Speichern Sie die Datei und beenden Sie sie. Drücken Sie in Nano Strg+O und dann die Eingabetaste, um zu speichern, und drücken Sie dann Strg+X, um den Vorgang zu beenden.

Immer wenn Sie eine neue Bash-Sitzung starten, liest Bash die .bashrc-Datei und setzt automatisch Ihre LS_COLORS-Variable. Um Ihre Farben in Zukunft zu ändern, gehen Sie zurück zu Ihrer .bashrc-Datei und bearbeiten Sie die Zeile LS_COLORS.
Du kannst die auch einfach löschen LS_COLORS=
Zeile, die Sie Ihrer .bashrc-Datei hinzugefügt haben, um wieder die Standardfarben zu verwenden. Wenn Sie den Wert LS_COLORS nicht festlegen, verwendet Bash die Standardfarben.