Greifen Sie als Datei auf den Scrollback-Puffer von xterm zu

8

Ist es irgendwie möglich, auf den Scrollback-Puffer von xterm als (schreibgeschützte) Datei oder als Zeichengerät zuzugreifen?

Das Kernproblem (um x / y "Problemming" zu vermeiden) ist folgendes: Manchmal erzeugt der Befehl, den ich gerade ausgeführt habe, eine nicht deterministische Ausgabe, und ich möchte seine Ausgabe irgendwie verwenden, ohne vorher darüber nachzudenken, sie zu schlagen . Im Moment besteht die einzige Möglichkeit, dies zu tun (die mir bekannt ist) darin, den Text mit der Maus in die Primärauswahl auszuwählen.

John Z.
quelle
Alternative zur Verwendung tee. Haben Sie darüber nachgedacht script, ein Protokoll aller Ihrer Befehle in einer Datei zu erstellen?
Stephen Quan

Antworten:

6

Sie können dies tun, indem Sie xterm anweisen, die Daten mit der print-everythingAktion zu drucken (normalerweise nicht an einen Schlüssel gebunden).

Alternativ ist in XTerm Control Sequences eine Escape-Sequenz dokumentiert :

CSI ? Pm i                                                                      
          Media Copy (MC), DEC-specific.                                        
            Ps = 1  -> Print line containing cursor.                            
            Ps = 4  -> Turn off autoprint mode.                                 
            Ps = 5  -> Turn on autoprint mode.                                  
            Ps = 1  0  -> Print composed display, ignores DECPEX.               
            Ps = 1  1  -> Print all pages.

die als aufgerufen werden könnte

printf '\033[?11i'

Für jeden Ansatz (zum Schreiben in eine Datei) muss jedoch ein Druckerbefehl konfiguriert werden.

Thomas Dickey
quelle
Ist das möglich, ohne xterm neu zu starten? Wenn es darum geht, xterm neu zu starten, ist dies keine wirkliche Antwort, da dies dazu führen würde, dass die Ausgabe verloren geht.
Kasperd
Das habe ich gesucht. Ressourcen können im laufenden Betrieb neu geladen werden, und ich kann xterm neu starten. Ich habe ein benanntes FIFO erstellt und es in Druckerbefehl konfiguriert, habe den Befehl "Alles drucken" an einen Schlüssel gebunden und es funktioniert genau so, wie ich es wollte.
John Z.
1

Sie können immer so etwas wie tmux verwenden, das genau das bietet capture-pane, was Sie wollen, zusammen mit Splits (vertikal und horizontal) und Multiplexing, Sitzungsunterstützung und vielen anderen Dingen.

Oder verwenden Sie einen anderen Terminal-Emulator xfce4-terminalist auch leicht und bietet eine einfacheSave Contents

Evan Carroll
quelle
1
Für mich klingt das nicht nach einer Antwort auf die Frage. Keines dieser Programme kann auf magische Weise Ausgaben erfassen, die derzeit nur in einem xterm-Fenster vorhanden sind.
Kasperd
@kasperd eine faire Interpretation. Er will etwas, das ohne Vorgedanken einfängt. Ich benutze tmuxohne nachzudenken. Dann habe ich dieses Problem nicht. Wenn Sie sich angewöhnen können, tmux zu verwenden, müssen Sie nie wieder darüber nachdenken (oder über viele andere Dinge).
Evan Carroll