Farben: Ändern Sie die Farbeinstellungen global

40

Ich verstehe lsGebrauch dircolors, um farbige Ausgabe anzuzeigen. dircolorsverfügt über eine Standarddatenbank mit Farben für Dateierweiterungen, die mit dem Befehl gedruckt werden können

dircolors --print-database

Aus man dir_colorsmeiner Sicht sollte sich die systemweite Datenbank in befinden /etc/DIR_COLORS. Diese Datei existiert jedoch nicht auf meinem System (Debian). Wie kann ich systemweite Farbeinstellungen für ändern dircolors? Woher nimmt der Befehl dircolors --print-databasedie Einstellungen, wenn keine Datei vorhanden ist.

Ich bin mir bewusst, dass der Benutzer eine benutzerspezifische Datei ~/.dircolorsmit seinen Einstellungen haben kann, aber dies ist nicht für mich geeignet, da ich die Einstellungen für alle ändern muss.

Eine zweite Frage ist, ob es möglich ist, 8-Bit-Farben für Dircolors zu verwenden. Mein Terminal ist xterm-256color.

user1968963
quelle

Antworten:

36

lsübernimmt die Farbeinstellungen aus der Umgebungsvariablen LS_COLORS. dircolorsDies ist lediglich eine bequeme Möglichkeit, diese Umgebungsvariable zu generieren. Damit diese Umgebungsvariable systemweit wirksam wird, legen Sie sie in der Startdatei Ihrer Shell ab.

Für bash, würden Sie dies in setzen /etc/profile:

# `dircolors` prints out `LS_COLORS='...'; export LS_COLORS`, so eval'ing
# $(dircolors) effectively sets the LS_COLORS environment variable.

eval "$(dircolors /etc/DIR_COLORS)"

Für zsh, würden Sie es entweder in setzen /etc/zshrcoder veranlassen zsh, /etc/profilebeim Start zu lesen . Möglicherweise hat Ihre Distribution zshdies bereits getan. Ich möchte nur darauf hinweisen, dass die Einstellung dircolorsfür wirklich alle von der verwendeten Shell abhängt.

dircolorsWenn Sie keine Datei angeben, werden nur einige integrierte Standardeinstellungen verwendet, um festzustellen, woher die Einstellungen stammen.

Sie können die xterm256-Farben-Escape-Codes in Ihrer dircolors-Datei verwenden. Beachten Sie jedoch, dass sie nur für xtermkompatible Terminals funktionieren. Sie funktionieren beispielsweise nicht auf der Linux-Textkonsole.

Das Format für 256 Farb-Escape-Codes gilt 38;5;colorNfür Vordergrundfarben und 48;5;colorNfür Hintergrundfarben. Also zum Beispiel:

.mp3  38;5;160                   # Set fg color to color 160      
.flac 48;5;240                   # Set bg color to color 240
.ogg  38;5;160;48;5;240          # Set fg color 160 *and* bg color 240.
.wav  01;04;05;38;5;160;48;5;240 # Pure madness: make bold (01), underlined (04), blink (05), fg color 160, and bg color 240!
Matt
quelle
1
Können Sie mir bitte erklären, wie ich die 256-Farben-Escape-Codes verwenden kann? Lassen Sie uns sagen , dass ich die folgende geändert werden soll , .mp3 00;36um den Einsatz color126 von der xterm-256 Farben Diagramm upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
user1968963
1
Klar, siehe meine Bearbeitung.
Matt
8

Woher nimmt der Befehl dircolors --print-databasedie Einstellungen, wenn keine Datei vorhanden ist.

Laut Handbuch wird eine vorkompilierte Datenbank verwendet, wenn keine Datei vorhanden ist.

Wenn eine Datei angegeben ist, liest dircolors diese, um zu bestimmen, welche Farben für welche Dateitypen und -erweiterungen verwendet werden sollen. Andernfalls wird eine vorkompilierte Datenbank verwendet. Um Einzelheiten zum Format dieser Dateien zu erfahren, führen Sie ' dircolors --print-database' aus.

Um die Einstellungen für alle zu ändern, können Sie eine /etc/dircolorsDatei erstellen und Folgendes hinzufügen /etc/bashrc:

d=/etc/dircolors
test -r $d && eval "$(dircolors $d)"
devnull
quelle
7

Hintergrundfarben für die Linux-Konsole mit Farben festlegen:

Ihre dircolors-Datei steuert die Farben für Wörter, die auf der Konsole durch ls angezeigt werden. Suchen Sie diese .dircolorsDatei für Ihre Distribution, einen Link zur Hilfe:

http://www.linuxfromscratch.org/blfs/view/svn/postlfs/profile.html

Für mich auf Fedora 17 ist meine dircolors-Datei: /etc/DIR_COLORS

Kopieren Sie /etc/DIR_COLORSin Ihr /home/el/.dircolorsVerzeichnis. Erstellen Sie es, wenn es nicht existiert.

Bearbeiten Sie /home/el/.dircolors und suchen Sie nach dem Text "dir".

Ändere das:

DIR 01;34   # directory

Dazu:

DIR 01;36   # directory

Speichern und schließen Sie die Shell und starten Sie sie neu. Die Verzeichnisse wechseln von dunkelblau auf schwarz (nicht lesbar) zu hellblau auf schwarz (lesbar).

Eric Leschinski
quelle
2
-1: Nein /etc/DIR_COLORSin der OP-Distribution, Debian. Und er weiß bereits ~/.dircolors, das war nicht die Frage
MestreLion