3 Stimmen

Automatisches Entfernen von Escape-Sequenzen beim Weiterleiten

Viele Shell-Tools wie grep und ls können farbigen Text im Terminal anzeigen. Und wenn die Ausgabe in eine reguläre Datei umgeleitet wird, werden die Escape-Sequenzen, die Farben darstellen, entfernt und nur reiner Text wird in die Datei geschrieben. Wie kann man das erreichen?

4voto

Barmar Punkte 665497

Verwendung:

if [ -t 1 ]

um zu testen, ob stdout mit einem Terminal verbunden ist. Wenn ja, die Escape-Sequenzen drucken, ansonsten einfach normalen Text drucken.

2voto

Digital Trauma Punkte 14572

Speziell hat grep einen Befehlszeilenschalter, um diese Einstellung anzupassen:

echo hello | grep ll                 # "ll" wird in Rot gedruckt
echo hello | grep --color=never ll   # "ll" wird ohne besondere Farbgebung gedruckt

Die meisten, wenn nicht alle Werkzeuge, die dies tun, haben einen ähnlichen Schalter - überprüfen Sie die Handbuchseiten für andere Werkzeuge.

Ein anderer Weg, dies für Werkzeuge zu tun, die automatisch erkennen, ob stdout mit dem Terminal verbunden ist oder nicht, besteht darin, sie zu täuschen, indem man die Ausgabe über cat leitet:

echo hello | grep ll | cat           # "ll" wird ohne besondere Farbgebung gedruckt

0voto

BobG Punkte 1

Ich hatte vor ein paar Tagen dasselbe Problem und bemerkte, dass ich folgendes in meiner .bashrc hatte

alias grep='grep --color=always' 

Ich habe es zu folgendem geändert und hatte keine weiteren Probleme

alias grep='grep --color=auto'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X