In letzter Zeit haben Befehlszeilentools die Tendenz, ausgefallene ANSI-Farben in ihrer Protokollausgabe zu verwenden (z. B. NPM und eine Vielzahl von NodeJS-basierten Tools, RVM, Docker und einige andere "moderne" Tools).
Dies macht es schön, auf dem Bildschirm zu lesen (*), aber nicht so schön, wenn Sie die Ausgabe in eine Protokolldatei oder über einen Transport leiten möchten, der ANSI nicht gut verarbeitet, wie verschiedene Remote-Ausführungstools und webbasierte Überwachungslösungen. Viele ausgereiftere Tools hatten zumindest den Anstand zu erkennen, wenn die Ausgabe kein TTY ist und die Farbe deaktiviert, aber nicht mit diesen neuen "benutzerfreundlichen" CLIs - was mir den Versuch lässt, die ANSI-Farben durch Piping loszuwerden die Ausgabe durch einen weiteren Prozess.
Das Aussetzen der Ausgabe s/\x1B\[[0-9]*\w//g
scheint die Arbeit zu erledigen, aber gibt es einen saubereren Ansatz, als nur reguläre Ausdrücke in alle meine Skripte einzufügen?
(*) Zumindest bis das Tool versucht, Fehler in Dunkelrot auf Ihrem dunklen Hintergrundterminal anzuzeigen.
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?
- Speichern Sie Ihren Bereinigungsfilter in einer Datei namens '/ usr / local / bin / stripttycolor.sh` oder so? Auf diese Weise haben Sie den regulären Ausdruck auf einen einzigen Ort beschränkt?--no-color
Flag zu arbeiten. Viele andere Befehle haben ähnliche Flags.bower
.Antworten:
"ansifilter -p" könnte für Sie nützlich sein ...
Es ist in den Fedora-Repos; -p gibt eine einfache Ausgabe an:
quelle