Was verursacht diesen grünen Hintergrund in der Ausgabe?

Bildschirmabdeckung der auf dem Linux-Computer ausgegebenen ls

Es werden zwei Verzeichnisse angezeigt „ls“. Normalerweise sind Verzeichnisse überall auf schwarzem Hintergrund blau. Aber der erste ist blau auf grün und nicht lesbar. Warum ist das? Wie macht man es blau auf schwarz oder zumindest etwas hell auf etwas dunklem?

Dies ist unter Ubuntu 12.04 mit Bash im Gnome Terminal. In Konsole ist das Blau etwas dunkler und kann gelesen werden, könnte aber viel besser sein.

Antwort

Abgesehen von der Färbung Dateien basierend auf ihrem Typ (türkis für Audiodateien, leuchtend rot für Archive und komprimierte Dateien und lila für Bilder und Videos), ls färbt Dateien und Verzeichnisse auch basierend auf ihren Attributen:

  • Schwarzer Text mit grünem Hintergrund zeigt an, dass ein Verzeichnis von anderen als dem besitzenden Benutzer und der Gruppe beschreibbar ist und das Sticky-Bit gesetzt ist (o+w, +t).
  • Blauer Text mit grünem Hintergrund zeigt an, dass ein Verzeichnis von anderen als dem Eigentümer und der Gruppe geschrieben werden kann und nicht das Sticky-Bit gesetzt hat (o+w, -t).

Stephano Palazzo bei Ask Ubuntu hat dieses sehr lehrreiche Bild über die verschiedenen Attributfarben erstellt:

Wh Bei den verschiedenen Farben im Terminal

Wie terdon hervorhob, können die Farbeinstellungen über dircolors . Auf eine Liste der verschiedenen Farbeinstellungen kann mit dircolors --print-database zugegriffen werden.

Jede Ausgabezeile, z. B. BLK 40;33;01 hat die Form:

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR] 
  • TARGET gibt das Ziel für die Farbregel an

  • TEXT_STYLE gibt den Textstil an:

    • 00 = keine
    • 01 = fett
    • 04 = Unterstrich
    • 05 = blinken
    • 07 = umgekehrt,
    • 08 = verborgen
  • FOREGROUND_COLOR gibt die Vordergrundfarbe an:

    • 30 = schwarz
    • 31 = rot
    • 32 = grün
    • 33 = gelb
    • 34 = blau,
    • 35 = magenta
    • 36 = cyan
    • 37 = weiß
  • BACKGROUND_COLOR gibt die Hintergrundfarben an:

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

Felder können von rechts weggelassen werden. .tar 01;31 bedeutet also fett und rot.

XTerm und die meisten anderen modernen Terminalemulatoren unterstützen 256 Farben.

Ein XTerm 256-Farben-Vordergrundfarbcode hat die Form:

38;5;[FOREGROUND_COLOR] 

Ein XTerm 256-Farben-Hintergrundfarbcode hat die Formular:

48;5;[BACKGROUND_COLOR] 

wobei sowohl FOREGROUND_COLOR als auch BACKGROUND_COLOR a ist Nummerieren Sie den Bereich 0-255. Eine vollständige Liste der Farbcodes für die Farbmodi 16 und 256 finden Sie im folgenden Screenshot:

16 und 256 Farbcodes im Farbmodus

Kommentare

  • BACKGROUND_COLOR-Codes sind nicht mit FOREGROUND_COLOR identisch. Hintergrundcodes sind 40-47
  • 38;5; startet einen xterm 256-Farben Vordergrundfarbcode. 48;5; startet einen xterm 256-Farben-Hintergrundfarbcode. Cyan in meiner Dircolors-Ausgabe ist 38;5;51 nicht 36, obwohl das Ergebnis dasselbe ist.
  • @stevesliva: Danke für deinen Kommentar. Ich ‚ habe die Antwort bearbeitet, um die Hintergrundfarbcodes korrekt anzugeben, und die 256-Farben-Vordergrund- und Hintergrundfarbcodes beschrieben.
  • Was bedeutet also nur Grün im Vordergrund? bedeuten? wie ich habe hier ?
  • @ChagaiFriedlander: Ausführbare Dateien (siehe untere Zeile in das Bild ).

Antwort

Die Farben von ls können die Berechtigungen darstellen Bei einigen Systemen werden standardmäßig Verzeichnisse angezeigt, in denen jeder über Schreibberechtigungen mit grünem Hintergrund verfügt:

Geben Sie hier die Bildbeschreibung ein.

Sie können die Farben ändern, indem Sie Ihre Variable $LS_COLORS 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 zwar etwas ärgerlich, aber Sie können diese Farbe ändern, indem Sie eine Datei mit den gewünschten Farben erstellen und als ~/.dircolors:

dircolors -p > ~/.dircolors 

Dieser Befehl druckt die Standardeinstellungen in ~/.dircolors. Sie müssen diese Datei dann 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 (siehe hier für eine Liste der Farbcodes):

OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky 

Sie müssen nicht alle Standardeinstellungen haben Sie können auch einfach eine Datei mit einer einzelnen Zeile erstellen und nur die Datei neu definieren, die Sie ändern möchten. Sobald Sie die Datei erstellt haben, laden Sie sie wie folgt:

eval "$(dircolors ~/.dircolors)"; 

Und hier ist es in Aktion:

Geben Sie hier die Bildbeschreibung ein.

Damit dies automatisch geschieht, fügen Sie das eval Befehl oben zu Ihrer ~/.bashrc -Datei.

Kommentare

  • Die Standardfarben scheinen oft darauf hinzudeuten, dass der ursprüngliche Autor uns und unsere Augen hasst …
  • Danke. Warum schreibst du manchmal ~ / .dirname und manchmal ~ / dircolors und manchmal ~ / .dircolors? sollen sie gleich sein?
  • Th anks. Warum eval "$(dircolors ~/dircolors)"; anstelle einer direkteren Methode wie dircolors ~/dircolors?
  • @Tim, weil dircolors nur die Einstellungen druckt, Sie müssen ausgewertet werden, damit sie gelesen werden können.
  • damit sie von wem gelesen werden können?

Antwort

Obwohl alle technischen Antworten zutreffen, würde ich es als informelle Warnung betrachten, dass Sie die Rechte ein wenig auf Großzügigkeit oder das Kopieren von Criss + Cross verteilt haben … (meistens tun wir das alle , damit die Dinge anfänglich funktionieren, wie?)

Wie macht man es blau auf schwarz, …?

Eine gute„ Entgrünung “, um zu den Rechten zurückzukehren, die Sie höchstwahrscheinlich wollen, ist diese Aussage:

chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/ 

Am besten verstanden, was es tut, wenn Sie den Zweck von Großbuchstaben + X „Special Execute“ verstehen, dh Wikipedia

Es ist nur dann wirklich nützlich, wenn es mit „+“ und normalerweise in Kombination verwendet wird mit der Option -R, um Gruppen- oder anderen Zugriff auf einen großen Verzeichnisbaum zu gewähren, ohne die Ausführungsberechtigung für normale Dateien (z. B. Textdateien) festzulegen, was normalerweise passieren würde, wenn Sie nur „chmod -R a + rx …

Antwort

Hier sind die drei Schritte, mit denen ich die Farben geändert habe:

Kopieren Sie zuerst die Standardfarben in eine Datei

dircolors -p > ~/.dircolors 

Ändern Sie dann diese Datei. Im Inneren finden Sie einige Werte für Farben. Hier sind einige weitere:

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 

( source )

Fügen Sie abschließend die folgende Zeile zu Ihrer ~/.bashrc -Datei 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 

Antwort

Um das Problem schnell zu beheben (machen Sie andere beschreibbare Dateien auf nobg gelb):

LS_COLORS+=":ow=01;33" 

Ersetzen Sie 33 durch 34 für Blau auf Nobg. Noch einfacher, um es auf nobg nofg zu machen:

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 LS_COLORS an:

echo "$LS_COLORS" | sed "s/:/\n/g" | grep -v "\*." 

sed setzt jede Regel in eine Zeile und grep entfernt die Regeln, die mit *.".


To beginnen Erkunden Sie die Farben ls auf Ihrem Terminal. 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, ist 38;5; das Präfix für den 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 verschiedenen Farben in ls? – auf AskUbuntu

Kommentare

  • Ich habe festgestellt, dass LS_COLORS+=':ow=01;33' in meine ~/.zshrc hat geholfen, den Farbhintergrund für Verzeichnisse in einem Git-Repo zu deaktivieren.Dies ist auf einem Windows 10-Computer mit einer Pengwin-WSL-Distribution. Jetzt sind alle Verzeichnisse in git-repo lesbar.

Antwort

Nun, dies bedeutet, dass dieser Ordner Berechtigungen hat, wenn Sie führen Folgendes aus:

сhmod og-w AU_LI

wird entfernt bgcolor 🙂

Antwort

Um dies zu beheben, versuchen Sie es mit ow Parameter für LS_COLORS

Zum Beispiel:

~LS_COLORS="fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33" ~ls -l 

Geben Sie hier die Bildbeschreibung ein.

Nun fügen Sie die ow (OTHER_WRITABLE) Option

~export LS_COLORS="fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33:ow=0" ~ls -l 

Geben Sie hier die Bildbeschreibung ein. Bamm !!

Kommentare

Antwort

Sie können den Grünton in Putty ändern, um den Text lesbar zu machen.

Öffnen Sie Putty und gehen Sie zum Fenster \ Farben, wählen Sie „ANSI-Grün“ und stellen Sie es auf ein dunkleres Grün ein (R: 0 G: 70 B: 0).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.