Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Formatiertes Terminal-Ergebnis in Datei speichern

Formatiertes Terminal-Ergebnis in Datei speichern

marm07.10.2213:23
Per ">" leite ich ein Terminal-Kommando-Ergebnis in eine Textdatei um. Im Terminal sieht das so aus:

In der Textdatei so:
7l------------------------------------------------------------------------------------------------------------------------------------(B(B[?7h
[?7l(B[99](B  📂 Taskmanagement[?7h
[?7l(B[59](B  📂 IT[?7h
[?7l(B[50](B  📂 Eingang[?7h
Gibt es eine Möglichkeit, das Ergebnis eines Terminal-Kommandos so abzuspeichern, dass es wie im Terminal aussieht?
Alternativ wäre mir ein Text ohne Formatierung auch ganz recht.
0

Kommentare

michimaier07.10.2213:37
Sieht für mich so aus als ob die Datei falsch decodiert wäre, also mit falschem Zeichenformat ( entschuldigt bitte wenn ich die Begrifflichkeiten falsch verwende... )
In Txt-Editoren wie Sublime, kann man "Reopen with encoding" machen - da könntest du dich ein wenig durchprobieren - ansonsten der Text Datei selbst die Information mitgeben, tippe auf UTF-8BOM...
Wie gesagt kann sein dass ich die Begrifflichkeiten nicht exakt benutze, aber es sieht so aus als würde da dein Problem liegen.
-1
Marcel Bresink07.10.2213:52
michimaier
Sieht für mich so aus als ob die Datei falsch decodiert wäre, also mit falschem Zeichenformat

Nein, daran liegt es nicht. Die Textcodierung stimmt, es werden ja sogar die Emojis in der Ausgabe korrekt angezeigt.
marm
Per ">" leite ich ein Terminal-Kommando-Ergebnis in eine Textdatei um.

Was wirklich passiert, ist Folgendes: Du rufst über das Terminal ein Programm auf, das in der Lage ist, zu erkennen, dass es per Terminal gestartet wurde. In dem Fall gibt dieses Programm dann zusätzlich zum Text auch Steuerzeichen aus, um Komfortfunktionen des Terminals zu steuern, also z.B. "Umschalten der Textfarbe auf grün". Wenn Du die Datei mit einem normalen Texteditor öffnest, werden die Steuerzeichen nicht mehr interpretiert und damit sichtbar.

Das Terminal ist eine Art erweitertes Textprogramm, das Funktionen von Fernschreibern und Datensichtgeräten emuliert. Von Hause aus ist es auf den Industriestandard "xterm-color" eingestellt.

Entweder musst Du das Programm mit einer zusätzlichen Option so aufrufen, dass es nur noch reinen Text erzeugt und keine Terminal-Ausgabe. (Falls es das kann. Das hängt vom Programm ab.) Oder Du filterst die Steuerzeichen nachträglich aus der Ausgabe heraus. Das ist eine Standardaufgabe, zu der man im Internet Musterlösungen findet, z.B. hier:
+3
marm07.10.2214:00
Marcel Bresink
Das ist eine Standardaufgabe, zu der man im Internet Musterlösungen findet, z.B. hier:
Danke! Ich nutze iTerm2.
Dieses sed-Kommando hatte ich auch gerade gefunden, kam aber noch nicht mit der Syntax klar.
Wenn ich aus der verlinkten Musterlösung das letzte Beispiel nehme, ...
printf "\033[1;33;41m %s \033[0m\n" "YELLOW on RED" | sed -r "s/\x1b\[([0-9]{1,2}(;[0-9]{1,2})*)?m//g"
... wie leite ich das Ergebnis daraus dann in eine Textdatei? Mit "> Pfad/test.txt" oder mit "|"?
0
Marcel Bresink07.10.2214:02
Nachtrag: Wenn der Text nur kurz ist und nur einmalig übernommen werden soll, wäre natürlich eine einfachere Lösung, das Problem komplett zu umgehen.

Du kopierst den Text einfach per Copy/Paste aus dem Terminal-Fenster in ein Textprogramm. Wenn das Zielprogramm "formatierten Text" beherrscht, bleiben dann auch die Textattribute wie z.B. die Farbe erhalten.
+1
Marcel Bresink07.10.2214:05
marm
... wie leite ich das Ergebnis daraus dann in eine Textdatei? Mit "> Pfad/test.txt" oder mit "|"?

Naja, beides. Der Witz an Unix ist ja, dass man fast alle Programme beliebig mit "|" oder Kombinationen von ">" und "<" hintereinanderschalten kann.

Also entweder nacheinander:
programm > text1
sed ... < text1 > gefiltert.txt

oder direkt parellel:
programm | sed ... > gefiltert.txt
+2
marm07.10.2214:07
Alles klar, danke. Das probiere ich ... Das hatte ich so in der Form bereits, da kam aber ein "zsh: permission denied"
Ich hatte mir folgendes überlegt: Ein Programm filtert mir bestimmte Zeilen aus mehreren Text-Dateien (das funktioniert). Wenn ich das Ergebnis in eine Textdatei leite, kann ich mir in Devonthink meine Liste anzeigen lassen
0
marm07.10.2214:20
So, also es funktioniert grundsätzlich. Die Hälfte der Formatierung ist entfernt. Den Rest schaffe ich auch noch durch weitere Optimierung von sed.
Danke für Eure Hilfe.
+1
gfhfkgfhfk07.10.2215:54
Marcel Bresink
Entweder musst Du das Programm mit einer zusätzlichen Option so aufrufen, dass es nur noch reinen Text erzeugt und keine Terminal-Ausgabe.
Eigentlich sollte es ausreichend sein, wenn man die TERM Variable (vor dem Programmaufruf "export TERM=vt100" eingeben) auf einen passenden alten Wert einstellt z.B. vt100. Dahinter verbirgt sich folgendes Terminal DEC VT100.

@marm Modernere Terminals unterstützen Farbe, unterschiedliche Stile von Text etc. xterm ist die verbreiteste Terminal Emulation auf UNIX/Linux Systemen und kann mittlerweile etliche Farben, Textstile, und Unicode Zeichensätze unterstützen. Für die Emulation von alten Programmen gibt es in Unicode extra Zeichen, damit man im Stile von DOS Menüs zusammenbauen kann Box Drawing und Block Elements.
+1

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.