So schreiben Sie Terminalinhalte in eine Datei

13

Hier ist meine Situation: Ich öffne das Terminal und starte ein Programm, das den Live-Feed im Terminal (Text) anzeigt, der sich jede Sekunde ändert. Während dieses Programms kann nur die Eingabetaste verwendet werden (das Programm wird beendet). Sie können also nichts anderes in die Konsole eingeben.

Ich möchte diesen Terminalinhalt wie nach jeder Sekunde in eine Datei schreiben.

Wie mache ich es? Indem Sie die 2. Konsole öffnen und einen Befehl verwenden? Mit dem Befehl setterm -dump funktioniert es nicht.

Gustav
quelle
1
Hm, welche Anwendung ist das? Wenn Sie nicht gut geprüft haben, sollten Sie sicherstellen, dass die Anwendung eine Option zum Speichern der Ausgabe hat.
Severo Raz
Habe das überprüft. Das tut es nicht. Sonst hätte ich dieses Problem nicht. Programm ist live-f1, launchpad.net/live-f1
Gustav

Antworten:

16

Sie können Ihre Ausgabe an das teeProgramm weiterleiten ( Beschreibung ):

my_program ... | tee my_program.log

Dadurch wird die Ausgabe auf dem Terminal angezeigt, aber auch in die Datei geschrieben my_program.log

steabert
quelle
Gleiches Ergebnis wie bei 1. Antwort. : /
Gustav
1
Der Screenshot, den Sie gepostet haben, scheint viele Terminal-Escape-Sequenzen zu enthalten. In den Launchpad-Informationen werden ncurses verwendet (ich habe den Quellcode mit heruntergeladen bzr branch lp:live-f1und habe dann im nachgesehen README). Können Sie das Programm ohne Farben ausführen, indem Sie TERMdumb ( export TERM=dumb) einstellen ? Die Quelle enthält auch eine TODODatei, die auf der Wunschliste vermerkt ist, um einen Verlauf der Treiber zu speichern. Vielleicht können Sie sich an die Entwickler wenden, um zu erfahren, was sie planen, oder um zu erfahren, wie Sie Ergebnisse speichern können.
Steabert
12

Wenn Sie Ihren Befehl vom Terminal aus ausführen, anstatt die Ausgabe auf Ihrer Konsole zu sehen, können Sie ihn direkt in eine Datei umleiten. Während das Programm läuft, wird die Ausgabe in die Datei geschrieben. In einem Beispiel möchten Sie den Inhalt Ihres Ordners mit einem ls-Befehl in eine Datei namens list.txt schreiben

ls > list.txt

Der >Operator leitet Ihre Ausgabe entsprechend Ihren Anforderungen um.

oben ohne
quelle
Thx, das klappt aber teilweise. Der Inhalt sollte HTML sein, aber wenn ich die Datei öffne, ist es ungefähr so ​​(Ausschnitt aus der Datei): VETTEL [21G (B [m [39; 49m. Programmname ist "live-f1". Live-f1> live_f1_dump. log
Gustav
@Gustav meinst du, dass es in der Konsole html druckt und in der Datei die obigen Zeilen?
Oben ohne
Ja. Dies erhalte ich, wenn ich Ihren vorgeschlagenen Befehl ausführe : upload.ee/image/1223166/ss_01.png . Mein Ziel ist es, die Positionen der Formel-1-Fahrer aus dem Live-F1-Feed in eine Datei zu übertragen. Ich habe es letztes Jahr zum Laufen gebracht, indem ich das Programm live-f1 im 1. Terminal ausgeführt, dann das 2. Terminal gestartet und mit einem Befehl den Bildschirm des 1. Terminals erfasst und in einer Datei gespeichert habe (Kopie der letztjährigen Datei: upload.ee/download/1223347) /0b6545ce227661452c8/html.log ). Der Befehl war ungefähr so: tty "1st terminal pointer" "filename". Möglicherweise war es etwas anderes, was ich dafür verwendet habe.
Gustav
2

Versuchen Sie es mit dem scriptBefehl. Leider enthält das Transkript eine Menge Steuerzeichen-Gobbledegooks. Wenn Sie diesen Link jedoch auf der NCSSM CS-Site sehen , finden Sie eine unvollständige, aber ziemlich gute Lösung für das Problem.

ncmathsadist
quelle