ubuntuusers.de

Farbigen Text in eine Log-Datei schreiben

Status: Ungelöst | Ubuntu-Version: Server 22.04 (Jammy Jellyfish)
Antworten |

Christofer

Avatar von Christofer

Anmeldungsdatum:
2. Februar 2007

Beiträge: 185

Hallo Community,

ich habe ein Shellscript geschrieben wo er jede Ausgabe auf der shell auch in einer Logdatei schreibt:

1
2
3
4
LOG /var/log/skripte/datei.log
# Leite alle Ausgaben in die Logdatei um
exec > >(tee -i ${LOG})
exec 2>&1

Das funktioniert ganz gut, aber sobald ich farbigen Text ausgeben will, wie in der folgenden Form:

1
2
gelb="\x1b[0;33m"
echo -e "${gelb} Ein Text"

Zeigt er in der Shell den Text korrekt in Farbe an, in der Log-Datei taucht dann aber folgendes auf:

^[[0;33m Ein Text

wenn ich die Logdatei mit "cat" auslese ist der Text wieder farbig, also scheint es sich um Steuerzeichen zu handeln. Wie kann ich aber den Text gleich farbig in die Logdatei schreiben?

Danke schon mal für Euer Wissen!

Christofer

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1244

Wie du selber schreibst: wenn du den Text mit "cat" ausgibst, wird er farbig angezeigt, weil du die Escape-Sequenz für gelbe Farbe in die Datei geschrieben hast. Was genau willst du denn haben? Womit willst du die Datei denn ansehen ausser mit "cat"?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13189

Christofer schrieb:

Das funktioniert ganz gut, aber sobald ich farbigen Text ausgeben will, wie in der folgenden Form:

Besser, Du nutzt tput für die Codierung der Farben, weil das die passenden Escape-Sequenzen für das aktuelle Terminal schreibt.

wenn ich die Logdatei mit "cat" auslese ist der Text wieder farbig, also scheint es sich um Steuerzeichen zu handeln. Wie kann ich aber den Text gleich farbig in die Logdatei schreiben?

Ich verstehe die Frage nicht. Was willst Du erreichen?

Bedenke auch, dass die Escape-Sequenzen, die Du beim Schreiben der Logdatei einfügst, nicht unbedingt zu einem Terminal passen müssen, auf dem Du später die Datei anschauen willst. Ganz abgesehen davon, dass so etwas oft Suchen in der Datei beeinträchtigt.

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1244

Hallo rklm,

hast du vielleicht ein Beispiel für tput parat?

In der heutigen Zeit dürfte es eigentlich nicht mehr viele Terminal-Emulationen geben, die die standardisierten ANSI-Escape-Sequenzen für Farben nicht verstehen.

Grüsse, juribel

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13189

juribel schrieb:

hast du vielleicht ein Beispiel für tput parat?

Manpage

In der heutigen Zeit dürfte es eigentlich nicht mehr viele Terminal-Emulationen geben, die die standardisierten ANSI-Escape-Sequenzen für Farben nicht verstehen.

Kann schon sein. Was Du erreichen willst, ist mir deshalb allerdings nicht klarer.

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1244

Ich will ja gar nichts erreichen ☺

meine Frage nach tput - reine Neugier. Wie man aber damit Farbsequenzen ausgeben kann, erschliesst sich mir aus der manpage nicht.

Meine Anmerkung zu den Escape-Sequenzen - ich hab mich mal eine Weile intensiv damit beschäftigt, und sie sind weitgehend standardisiert. Funktionierten sogar teilweise schon unter DOS durch Aufruf von ANSI.

juribel

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13189

juribel schrieb:

Ich will ja gar nichts erreichen ☺

Oh sorry, eine Verwechselung. ☺

meine Frage nach tput - reine Neugier. Wie man aber damit Farbsequenzen ausgeben kann, erschliesst sich mir aus der manpage nicht.

Findest Du reichlich im Netz.

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1244

tput scheint mir der allerkleinste Nenner für die farbige Darstellung zu sein. Auf "normalen" PC und Laptops müssten allerdings die ANSI-Farbsequenzen mit ihren 16 Millionen möglichen Farben in den gängigen Terminal-Emulationen funktionieren.

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2133

Wohnort: Gelsenkirchen

Es sind halt spezielle Steuersequenzen, die von Terminals interpretiert werden. Irgendwie muss die Farbe-Info ja reingebracht werden. Ein normaler Editor zeigt dir hingegen den reinen Text an. Suchst du einen Editor, der diese Sequenzen verarbeiten kann, oder worum geht es dir hierbei?

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1244

Genau das ist die Frage. Ich persönlich kenne keinen Editor und auch kein Text-Anzeigeprogramm ausser dem Terminal, welches diese ANSI-Sequenzen interpretiert und ausführt statt sie in Textform anzuzeigen.

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1253

juribel schrieb:

Genau das ist die Frage. Ich persönlich kenne keinen Editor und auch kein Text-Anzeigeprogramm ausser dem Terminal, welches diese ANSI-Sequenzen interpretiert und ausführt statt sie in Textform anzuzeigen.

Wenn du die Textdatei dir mit "less" anschaust, siehst du die Escape Sequenzen. Wenn du im "less" den Befehl "-r" eingibst, werden die Escape Sequenzen korrekt interpretiert und z.B. in Farbe dargestellt. Es wir aber nur die ANSI Untermenge des VT100 sets dargestellt:

echo -e "\033[0;33m Ein farbiger Text
\033(0Dies ist der G0 Font
\033)0Dies ist der G1 Font
\033(und wieder der G0 Font
\033[0mReset all Attributes
\033[1mBold text
\033[2mschwach (gedimmed)
\033[4munterstrichener text
\033[5mblinkender text
\033[7mreverse text
\033[8mhidden text
\033[0mReset all Attributes
\033#6double width line
\033#3double height line oben
\033#4double height line unten
\033[0mReset all Attributes
fertig" | less

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2133

Wohnort: Gelsenkirchen

Es gibt ein Plugin für die IntelliJ IDE:

https://plugins.jetbrains.com/plugin/9707-ansi-highlighter-premium

Sonst ist mir da nichts bekannt. Fragt sich halt, ob man für Logfiles so nen Aufwand betreiben will.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4677

Wohnort: Berlin

Für SublimeText gibt es auch ein Plugin: ANSIescape. Der Text ist dann read-only, aber zum betrachten von Logdateien oder farbigen Ausgaben von Programmen reicht es um zu suchen und Sachen raus zu kopieren, ohne die ANSI-Steuerzeichen.

Antworten |