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:
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:
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 ist38;5;51
nicht36
, 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:
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:
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 wiedircolors ~/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
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
Kommentare
- Wenn Sie die Farbe über .dir_colors ändern möchten, können Sie
OTHER_WRITABLE 34;43
hinzufügen. Dank an: gist.github.com/jmoz/280005/…
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).