Normalerweise ist es schön , von Farbausgabe zu haben ls
, grep
etc. Aber wenn Sie nicht wollen , es (wie in einem Skript , in dem Sie die Ergebnisse an einem anderen Befehl sind kochend) gibt es einen Schalter, der es ausschalten kann? ls -G
Schaltet es ein (mit einigen BSD-abgeleiteten Versionen von ls
), wenn es nicht die Standardeinstellung ist, aber ls +G
es nicht ausschaltet. Gibt es irgendetwas anderes, das das wird?
50
ls
undgrep
beim Piping müssen Sie nichts tun, da das Coloring--color=auto
bereits deaktiviert ist, wenn es sich bei der Ausgabe um eine Pipe handelt, oder eigentlich um alles andere als eine Tty. das ist, was "auto" bedeutet. Ebenso ist FreeBSDls -G
oder 'CLICOLOR' 'deaktiviert, wenn die Ausgabe nicht an ein Terminal gerichtet ist, es sei denn ... CLICOLOR_FORCE ...'.Antworten:
Die
ls
Farbausgabe für wird heutzutage in den meisten Distributionen normalerweise über einen Alias aktiviert.Sie können einen Alias jederzeit vorübergehend deaktivieren, indem Sie ihm einen Backslash voranstellen.
Durch Ausführen der obigen Schritte wird der Alias nur für diesen einen Aufruf kurzgeschlossen. Sie können es jederzeit verwenden, wenn Sie einen Alias deaktivieren möchten.
quelle
command ls
natürlich auch verwenden , aber dies ist etwas schneller.Mit GNU
ls
können Sie angebenls --color=never
, dass die Farbausgabe explizit deaktiviert werden soll. (Auch wenn Sie eine habenalias ls='ls --color=auto'
, wird diese beim Ausführenls --color=never
auf erweitertls --color=auto --color=never
, und die spätere Option hat Vorrang.)quelle
Sie können auch einfach verwenden (wie unter DOS):
Es werden die Ergebnisse ohne Farbe angezeigt, Sie können die Argumente gleich hinzufügen
ls
, wie-l
.quelle
oder
Dadurch werden die Färbungen dauerhaft deaktiviert.
quelle
ls
Alias hinzugefügt haben , und Sie verlieren sie für die gesamte Sitzung, anstatt nur einen einzigen Befehl.In vielen Linux-Distributionen ist dies bei den Benutzern standardmäßig aktiviert
.bashrc
.Bearbeiten
~/.bashrc
und entfernen Sie die Zeile, die wie folgt aussieht:Wenn Sie diese Funktion in Zukunft für alle auf diesem Computer neu erstellten Konten deaktivieren möchten, entfernen Sie dieselbe Zeile aus:
quelle
Auf Centos7 wird dies eingestellt in
/etc/profile.d/colorls.sh
... Die letzten 3 Zeilen dieses Skripts sind:Wenn Sie den Wunsch und die Berechtigungen haben ... sollte das Auskommentieren der unerwünschten Zeile den Trick tun.
quelle
unalias ls ll l
in Ihnen,.bashrc
wenn Sie keine Berechtigungen habenSo schalten Sie die Farbe aus: unalias ls
So schalten Sie die Farbe ein: alias ls = 'ls --color = auto'
So deaktivieren Sie die Farbe vorübergehend: \ ls -ltr
quelle
Es könnte noch etwas anderes los sein.
ls
sollte keine Farben verwenden, es sei denn, es glaubt, mit etwas Interaktivem verbunden zu sein. Es sollte die Dinge nicht färben, wenn Sie zu einem anderen Programm weiterleiten.Ein Alias ist in der Regel eine schlechte Idee, da Sie diese Option nie loswerden können und sich an persönliche Einstellungen gewöhnen, die Sie möglicherweise nicht auf einen anderen Computer übertragen können, an dem Sie arbeiten müssen. Wenn Sie es ausschalten müssen, um es an etwas anderes weiterzuleiten, verwenden Sie den Schalter in dieser Leitung. Aber Farben sollten nicht in einer Pfeife sein.
Überprüfen Sie
ls
, ob Ihre dieLS_COLORS
Umgebungsvariable unterstützt . Das trapd00r / LS_COLORS zeigt Ihnen, wie das funktioniert. Mit dircolors können Sie die Farben minutiös und nach Dateityp anpassen. Wenn Sie nicht festlegen,LS_COLORS
sondern die Farbgebung aktiviert haben,ls
werden eine Reihe von Systemaufrufen ausgeführt, um die Dateitypen und -attribute zu ermitteln, damit ermittelt werden kann, welche Farben verwendet werden sollen. Die Leute hinter Sherlock haben festgestellt, dass die EinstellungLS_COLORS
all dies vermeiden und die Geschwindigkeit um das 40-fache verbessern kann . Lesen Sie ihre blutigen Details, um zu sehen, was sie gefunden haben.Ich lasse alle Dateitypen die Standardfarben verwenden:
Hier ist die LS_COLORS-Datei, die ich Dircolors hinzugefügt habe:
Für
grep
, ob Ihr TrägerGREP_COLORS
oderGREP_OPTIONS
.quelle
ls
Ausgabe-Escape-Sequenzen für die ausgewählten Farben erstellt werden. Vergleichen Sie die Ausgabe vonls --color=always | od -a
mit der vonls --color=never | od -a
mit dieser Einstellung vonLS_COLORS
.ls | od -a
die Flucht nicht ausgelöst wird, und das ist es, was ich will. Derls
sollte diese Sequenzen nur dann ausgeben, wenn er die Ausgabe an ein Terminal sendet. Wenn Sie es aber sagen, ist es sicher, dass es das tun wird. Also mach das nicht.Wenn Sie die Antwort von @ brian-d-foy hinzufügen, gibt es meistens eine einfache ärgerliche Farbe, die Sie mögen, um das unsichtbare Blau des Verzeichnisses oder das auffällige Grün von "OTHER_WRITABLE" zu ändern. Bitanzeige :)
um nur die Verzeichnisfarbe und ihre andere beschreibbare Farbe neu zu definieren
Lesen Sie mehr über den ANSI-Code
quelle
ls
und nicht darum, wie einzelne Farben geändert werden können.