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: | 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: | 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
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
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
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
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
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
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
Ehemalige
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.
|