Aktuelles Terminal-Scrollback in Datei speichern?

24

Ich habe nach einer Antwort darauf gesucht und nichts gefunden, was mich glauben lässt, dass es nicht möglich ist, aber ...

Ist es möglich, den aktuellen Gnome Terminal-Scrollback-Puffer in einer Datei zu speichern?

Ich weiß, dass ich etwas tun kann command > output.txt, um die gesamte Ausgabe in eine Datei umzuleiten oder command | tee output.txtdie Ausgabe sowohl in das Terminal als auch in eine Datei aufzuteilen. Was ich versuche, ist dies nachträglich festzuhalten. Ich möchte den Scrollback-Inhalt des aktuellen Terminals in einer Datei speichern.

Karl Wilbur
quelle
kittyist ein Terminalprogramm, das dies kann, leider sehen Schriften schrecklich aus (kein Subpixel-Rendering)
jberryman
Vielen Dank, @jberryman. Gut zu wissen.
Karl Wilbur

Antworten:

37

Nach einigem Herumspielen habe ich festgestellt, dass Sie:

  • triple-click die letzte Zeile
  • schlagen shift + home
  • shift + click erste Linie
  • Kopieren mit ctrl + shift + c(oder right-click> 'Kopieren')

Fügen Sie es jetzt in eine Textdatei ein ... oder verschieben xselSie Ihre Zwischenablage mithilfe von in eine neue Datei, indem Sie einfach einen neuen Tab öffnen und Folgendes ausführen:

xsel -o > out.txt

(Zum installieren xselmachen sudo apt-get install xsel)

Karl Wilbur
quelle
5
Hervorheben kann einfacher gemacht werden: Edit-> Select All.
egmont
3
Dies ist eine großartige Antwort, da Sie erkennen, dass Sie genau den gewünschten Ort für den Beginn der Ausgabe verwenden triple-click the last lineund shift + home or the scrollbaransteuern können.
Chef Pharao
2
Warnung: Versuchen Sie dies nicht mit einem großen Scollback (viele Megabyte), da es X hängen könnte (ist mir passiert).
Kevin Cox
Mit vielen Megabyte ist eine langsame Verarbeitung zu erwarten. Seien Sie geduldig und lassen Sie den Computer arbeiten. "Geben Sie es eine Sekunde! Es wird zum Weltraum! Können Sie es eine Sekunde geben, um vom Weltraum zurückzukommen ?!"
Karl Wilbur
Ich habe gerade versucht, einen großen Scrollback (rsync-Ausgabe von der Sicherung einiger 2-TB-Laufwerke über Nacht) mit der Edit-> Select All-Methode zu kopieren , um die Ausgabe zu erfassen. Es ist jetzt 25-30 Minuten her und Gnome Terminal ist immer noch eingesperrt. Mit Byobu konnte ich feststellen, topdass Gnome Terminal noch ausgeführt wird (was die CPU-Zeit erhöht). Derzeit werden mehr als 4,176 g RAM verbraucht und es geht langsam bergauf. Also, ja, mit einem sehr großen Scrollback wird es eine Weile dauern. X läuft noch (und Chrome, YouTube, Nautilus, Byobu usw.), aber Gnome Terminal wird eine Minute brauchen. Ich hätte besser planen sollen.
Karl Wilbur
2

scriptDer Befehl ist geeignet, wenn Sie eine Terminalsitzung in einer Datei speichern und später anzeigen möchten. Wenn Sie es aufrufen script, wird Ihre Shell gestartet, und wenn Sie fertig sind, geben Sie einfach exit ein. Alles wird in einer typescriptDatei gespeichert, sofern Sie nichts anderes angeben.

Zum Beispiel,

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015年 10月 27日 星期二 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit
Script done, file is typescript
xieerqi@eagle:~$ cat typescript 
Script started on 2015年10月27日 星期二 11时37分55秒

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015年 10月 27日 星期二 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit

Script done on 2015年10月27日 星期二 11时38分18秒

Die Typoskriptdatei kann jedoch Steuerzeichen enthalten, z. B. aus dem lsBefehl. Verwenden Sie daher den cat typescript | col -b > outputfile.txtBefehl, um die saubere Ausgabe in die Datei umzuleiten

Sergiy Kolodyazhnyy
quelle
5
Vielen Dank, aber dies muss getan werden, bevor Sie wertvolle Informationen in Ihrem Terminal gesammelt haben. Ich brauchte eine nachträgliche Lösung.
Karl Wilbur
1
Das ist allerdings sehr gut zu wissen. Ich werde es in Zukunft versuchen.
Karl Wilbur
@ KarlWilbur :) Ich bin sicher, Sie werden es nützlich finden. Ich benutze es oft für meine Programmieraufgaben. Es gibt tatsächlich eine Möglichkeit, das, was in TTY-Konsolen auf dem Bildschirm angezeigt wird, auszulesen, aber das Gnome-Terminal ist etwas kniffliger
Sergiy Kolodyazhnyy
@SergiyKolodyazhnyy Ich versuche, dies in mein Python-Skript zu implementieren, aber ich kann das Skript nicht mit "os.system" ("exit") beenden. Es wird jedoch vom Terminal beendet und die Ausgabe in einer Datei gespeichert.
mtkilic
@mtkilic Der scriptBefehl startet einen separaten Prozess, sodass Ihr Python-Skript, das ein übergeordnetes Element des Unterprozesses ist, darauf wartet, dass das untergeordnete Element beendet wird . Es ist eher für interaktive Sitzungen gedacht, aber wenn Sie eine Sitzung im Python-Interpreter aufzeichnen möchten, starten Sie zuerst den scriptBefehl und dann den Interpreter. Der Befehl sollte auch ein -cFlag haben, damit Sie ihn aufrufen können, script -c pythonaber überprüfen Sie ihn mit man script.
Sergiy Kolodyazhnyy