Was verursacht diesen grünen Hintergrund in der ls-Ausgabe?

Was verursacht diesen grünen Hintergrund in der ls-Ausgabe?

Screenshot der LS-Ausgabe auf einem Linux-Rechner

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 lsDateien 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:

Was die verschiedenen Farben im Terminal bedeuten

AlsterdonWie bereits erwähnt, können die Farbeinstellungen geändert werden überdircolorsEine 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]
  • TARGETgibt das Ziel für die Farbregel an

  • TEXT_STYLEgibt den Textstil an:

    • 00= keine
    • 01= fett
    • 04= Unterstrich
    • 05= blink
    • 07= rückwärts,
    • 08= verdeckt
  • FOREGROUND_COLORgibt die Vordergrundfarbe an:

    • 30= schwarz
    • 31= rot
    • 32= grün
    • 33= gelb
    • 34= blau,
    • 35= Magenta
    • 36= Cyan
    • 37= weiß
  • BACKGROUND_COLORgibt die Hintergrundfarben an:

    • 40= schwarz
    • 41= rot
    • 42= grün
    • 43= gelb
    • 44= blau,
    • 45= Magenta
    • 46= Cyan
    • 47= weiß

Von rechts beginnend können Felder weggelassen werden, also zum Beispiel .tar 01;31fett 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_COLORals auch BACKGROUND_COLOReine Zahl im Bereich 0-255 ist. Eine vollständige Liste der Farbcodes für die 16- und 256-Farbmodi finden Sie im folgenden Screenshot:

16 und 256 Farbmodus-Farbcodes

Antwort2

Die Farben lskönnen die Berechtigungen darstellen. Bei manchen Systemen werden Verzeichnisse, für die jeder Schreibberechtigung hat, standardmäßig mit einem grünen Hintergrund angezeigt:

Bildbeschreibung hier eingeben

Sie können die Farben ändern, indem Sie Ihre $LS_COLORSVariable 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:

Bildbeschreibung hier eingeben

Damit dies automatisch geschieht, fügen Sie evalIhrer ~/.bashrcDatei 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 33durch 34für blueauf . Noch einfacher ist es, es auf nobgzu setzen :nofgnobg

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 '\*.'

sedsetzt jede Regel in eine Zeile und grepentfernt die Regeln, die mit*.'.


Um die lsFarben 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 ~/.bashrcDatei 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

verwandte Informationen