So ändern Sie die Farben von Verzeichnissen und Dateien im Befehl ls
Wenn du das gemacht hast ls
Wenn Sie den Befehl in Bash ausführen, werden Sie feststellen, dass die Verzeichnisse und Dateien, die Sie sehen, 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 der Bash mitteilen, dass sie den Inhalt der Variablen ausdrucken soll:
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 sich erneut anzumelden oder das Terminalfenster zu schließen und erneut zu öffnen. Um den aktuellen Inhalt der Variablen LS_COLORS in einer neuen Variablen mit dem Namen 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 Standardwerten zu machen. Sie können sich jederzeit abmelden und wieder anmelden oder ein Terminalfenster schließen und wieder öffnen, um die Farben auf die Standardeinstellungen zurückzusetzen. Dies macht es jedoch leicht, dies mit einem einzigen, schnellen Befehl zu tun.
Wie man benutzerdefinierte Farben einstellt
Die Variable LS_COLORS enthält eine Liste von Dateitypen mit zugehörigen Farbcodes. Die Standardliste ist lang, da für verschiedene Dateitypen unterschiedliche Farben angegeben werden.
Beginnen wir mit einem grundlegenden Beispiel, um zu zeigen, wie das funktioniert. Angenommen, wir möchten die Farbe der Verzeichnisse von der Standardeinstellung "Fettblau" in "Fettrot" ändern. Wir können dazu den folgenden Befehl ausführen:
LS_COLORS = "di = 1; 31"
Das di = 1; 31
bisschen erzählt ls
diese 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 behält. Nehmen wir an, wir möchten, dass Dateien mit der Erweiterung .desktop auch eine unterstrichene Cyanfarbe aufweisen. Wir können dazu den folgenden Befehl ausführen:
LS_COLORS = "di = 1: 31: *. Desktop = 4; 36"
Das sagt ls
diese Verzeichnisse (di
) sind (=
) Fett gedruckt (1;
) rot (31
) und (:
) alle Dateien, die auf .desktop (* .desktop
) ist (=
) unterstrichen (4;
) cyan (36
).
Dies ist der Prozess zum Zusammenstellen Ihrer Liste von Dateitypen und Farben. Geben Sie in der Form filetype = color so viele an, wie Sie möchten, und trennen Sie die einzelnen Zeichen durch einen Doppelpunkt (:).
Um Ihre eigene Liste zusammenzustellen, müssen Sie nur die Liste der Farbcodes und der Dateitypen kennen. Hierbei werden die gleichen numerischen Farbcodes verwendet, die Sie beim Ändern der Farbe in der 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 zum Beispiel gelber Text den Farbcode 33 ist, würden Sie verwenden di = 33
Verzeichnisse gelb machen.
Hier ist die Liste der Textfarbenattribute:
- Normaler Text: 0
- Fett oder heller Text: 1 (hängt vom Terminalemulator ab.)
- Dim Text: 2
- Unterstrichener Text: 4
- Blinkender Text: 5 (Dies funktioniert nicht in den meisten Terminalemulatoren.)
- Umgekehrter Text: 7 (Dadurch werden die Vorder- und Hintergrundfarben invertiert, sodass schwarzer Text auf weißem Hintergrund angezeigt wird, 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 keine 0 für normalen Text angeben, da normaler Text verwendet wird, wenn Sie hier kein Attribut angeben.
Da fett gedruckter Text beispielsweise Farbcode 1 und gelber Text Farbcode 33 ist, würden Sie verwenden di = 1; 33
um Verzeichnisse fett gelb zu machen. Sie können auch mehrere Attribute angeben. Zum Beispiel könnten Sie verwenden di = 1, 4, 33
um Verzeichnisse fett zu machen, gelb unterstrichen.
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 zum Beispiel ein blauer Hintergrund den Farbcode 44 darstellt, würden Sie verwenden di = 44
einen blauen Hintergrund für Verzeichnisse verwenden. Sie können auch einen Hintergrundfarbcode, einen Vordergrundfarbcode und beliebig viele Attribute kombinieren. Zum Beispiel, di = 1, 4, 33, 44
würde Ihnen einen fetten, unterstrichenen gelben Text auf blauem Hintergrund geben.
Hier ist die Liste der Dateitypcodes:
- Verzeichnis: di
- Datei: fi
- Symbolischer Link: ln
- Named Pipe (FIFO): pi
- Sockel: 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 beliebige andere Elemente. Sie können beliebig viele Dateierweiterungen angeben.
Geben Sie so viele verschiedene Arten von Dateitypcodes an, wie Sie möchten, und zwar in beliebig vielen Farben, getrennt durch das Zeichen:. Wiederholen Sie diesen Vorgang, um Ihre LS_COLORS-Variable zusammenzustellen.
Angenommen, Sie möchten fetten violetten 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 Dateitypencodes und Farbcodes aus den obigen Listen zusammenstellen, erhalten Sie Folgendes:
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. Wahrscheinlich möchten Sie es jedoch dauerhaft machen, sodass 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 beliebige Bash-Variable festlegen, indem Sie sie der .bashrc-Datei Ihres Benutzerkontos hinzufügen. Diese Datei befindet sich unter ~ / .bashrc. Wenn Ihr Benutzername bob lautet, finden Sie ihn unter /home/bob/.bashrc. Es gibt auch andere Möglichkeiten, Umgebungsvariablen festzulegen, dies ist jedoch eine einfache.
Öffnen Sie zuerst diese Datei in Ihrem bevorzugten Texteditor. Wir werden Nano hier als Beispiel verwenden, aber Sie können vi, emacs oder alles andere verwenden, was Sie möchten.
nano ~ / .bashrc
Fügen Sie Ihre benutzerdefinierte LS_COLORS-Variable einer neuen Zeile am Ende der Datei hinzu, wie folgt:
LS_COLORS = "di = 1; 35: ex = 4; 31: *. Mp3 = 1; 32; 41"
Speichern Sie die Datei und beenden Sie den Vorgang. Drücken Sie in Nano die Tastenkombination Strg + O und dann die Eingabetaste, um zu speichern. Drücken Sie anschließend die Tastenkombination 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 der Zukunft zu ändern, kehren Sie zu Ihrer .bashrc-Datei zurück und bearbeiten Sie die Zeile LS_COLORS.
Sie können das auch einfach löschen LS_COLORS =
Zeile, die Sie Ihrer .bashrc-Datei hinzugefügt haben, um die Standardfarben erneut zu verwenden. Wenn Sie den LS_COLORS-Wert nicht festlegen, verwendet Bash die Standardfarben.