webentwicklung-frage-antwort-db.com.de

Wie speichere ich GNOME Terminal-Inhalte mit ANSI-Escape-Codes?

VT100-Terminals bieten eine relativ einfache Möglichkeit, Terminalinhalte mit Escape-Codes in einer Datei zu speichern zu verwenden Meta-p:

XTerm.VT100.printAttributes: 2
XTerm.VT100.printerCommand: cat - > file
XTerm.VT100.translations: #override Meta <KeyPress> P: print() \n

Ich habe mich ein bisschen umgesehen und kann keine Lösung dafür finden, die im Standard-GNOME-Terminal + XTerm + Bash funktioniert.

Ich will nicht nur ein Bild mit dem Inhalt des Fensters.

Es sieht so aus, als ob GNOME Terminal irgendwann ein Update dafür bekommen könnte, aber es gibt keine Informationen darüber, in welcher Version es enthalten sein wird, und seit dem letzten Update sind fast drei Jahre vergangen ...

9
l0b0

Leider lautet die Antwort sofort: Dies ist nicht möglich.

In meiner anderen Antwort habe ich aufgelistet, wie man das mit Skript macht, obwohl es einige Unterschiede gibt, wie Sie bemerkt haben. Die andere Möglichkeit besteht darin, den Quellcode zu kompilieren oder eine instabile Version zu verwenden.

Gnome Terminal Source Tarball

Die Version in Raring ist 3.6.1, Sie können sich also diese Quelle ansehen. Innerhalb von Terminal-window.c in Zeile 115:

/*
 * We don't want to enable content saving until vte supports it async.
 * So we disable this code for stable versions.
 */

#include "terminal-version.h"

#if (TERMINAL_MINOR_VERSION & 1) != 0
#define ENABLE_SAVE
#else
#undef ENABLE_SAVE
#endif
#endif

Optionen:

  1. Fügen Sie darunter #define ENABLE_SAVE hinzu.
  2. Ändern Sie die Version zu einem instabilen.
  3. Laden Sie eine instabile Version der .DEB herunter.

Hoffe das hilft.

3
LimpingNinja

Leider lautet die Antwort sofort: Dies ist nicht möglich.

Es gibt zwei Möglichkeiten, dies zu korrigieren, indem Sie jederzeit ein Skript auf Ihrem Terminal ausführen und alle Ausgaben protokollieren. Öffne gnome-terminal, gehe zu Bearbeiten -> Profileinstellungen, dann zum Tab Titel und Befehl und verwende diesen für deinen benutzerdefinierten Befehl:

bash -l -c 'script -q -c bash $HOME/sessionlogs/$BASHPID.sessionlog.$(date +%Y%m%d-%H%M).txt'

Stellen Sie sicher, dass unter $ HOME 'Sitzungsprotokolle' vorhanden sind.

Der andere Weg wurde entfernt und als zweite Antwort auf diese Frage hinzugefügt.

3
LimpingNinja

Es gibt ein Paket namens screen - ein Terminal-Multiplexer mit VT100/ANSI-Terminal-Emulation.

Laut der Manpage von screen auf der Ubuntu Manuals-Website , screen behauptet zu sein

ein Vollbild-Fenstermanager, der ein physisches Terminal zwischen mehreren Prozessen multiplext (normalerweise interaktive Shells). Jedes virtuelle Terminal bietet die Funktionen von ein DEC VT100-Terminal und zusätzlich mehrere Steuerfunktionen aus ISO 6429 (ECMA 48, ANSI X3.64) und ISO 2022 (z. B. Einfügen/Löschen von Zeilen und Unterstützung für mehrere Zeichensätze) ein Terminal-Multiplexer mit VT100/ANSI-Terminal-Emulation.

und beim Ausführen von screen :

Ctrlah (Hardcopy) Schreiben Sie eine Hardcopy des aktuellen Fensters in die Datei "hardcopy.n".

Ich habe es im GNOME-Terminal versucht, indem ich screen ausgeführt und eingegeben habe Ctrlah

running screen and typing Ctrl Alt h

Dies ist die Ausgabe meiner Hardcopy.1-Datei beim Öffnen in Gedit:

hardcopy.1 opened in Gedit

Sie finden den Bildschirm im Raring-/Hauptsoftware-Repository von Ubuntu 13.04.

Es ist nicht standardmäßig installiert.

0
user85164

Sie können Ihre Shells über script (1) ausführen, um alle Eingaben und Ausgaben des Terminals in einer Datei zu speichern, einschließlich der Terminal-Escape-Zeichen.

0
geirha