Accéder au tampon de défilement de xterm en tant que fichier

8

Est-il possible, d'une manière ou d'une autre, d'accéder au tampon de défilement de xterm en tant que fichier (en lecture seule) ou périphérique de caractères?

Le problème principal (pour éviter les "problèmes" de x / y) est le suivant: parfois la commande que je viens d'exécuter crée une sortie non déterministe, et j'aimerais utiliser sa sortie d'une manière ou d'une autre sans avoir pensé à la jouer . À l'heure actuelle, la seule façon de faire cela (à ma connaissance) est d'utiliser la souris pour sélectionner le texte dans la sélection principale.

John Z.
la source
Alternative à l'utilisation tee. Avez-vous envisagé de courir scriptpour créer un journal de toutes vos commandes dans un fichier?
Stephen Quan

Réponses:

6

Vous pouvez le faire en disant à xterm d'imprimer les données à l'aide de l' print-everythingaction (normalement non lié à une clé).

Alternativement, il existe une séquence d'échappement documentée dans XTerm Control Sequences :

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.

qui pourrait être invoqué comme

printf '\033[?11i'

Mais l'une ou l'autre approche (pour écrire dans un fichier) nécessiterait une configuration de printerCommand .

Thomas Dickey
la source
Est-il possible de le faire sans redémarrer xterm? S'il s'agit de redémarrer xterm, ce n'est pas vraiment une réponse car cela entraînerait la perte de la sortie.
kasperd
C'est ce que je cherchais. Les ressources peuvent être rechargées à la volée et je suis prêt à redémarrer xterm. J'ai créé un fifo nommé et l'ai configuré dans printerCommand, j'ai lié la commande print-everything à une clé et cela fonctionne exactement comme je le voulais.
John Z.18
2

Vous pouvez toujours utiliser quelque chose comme tmux qui fournit capture-panece qui vous convient , avec des séparations (verticales et horizontales) et le multiplexage, le support de session et une foule d'autres choses.

Ou utiliser un émulateur de terminal différent xfce4-terminalest également léger et fournit unSave Contents

Evan Carroll
la source
1
Pour moi, cela ne ressemble pas à une réponse à la question. Aucun de ces programmes ne peut capturer comme par magie une sortie qui n'existe actuellement que dans une fenêtre xterm.
kasperd
@kasperd une interprétation juste. Il veut quelque chose qui capture sans pré-pensée. J'utilise tmuxsans réfléchir. Alors je n'ai pas ce problème. Si vous pouvez prendre l'habitude d'utiliser tmux, vous n'aurez plus jamais à y penser (ou à beaucoup d'autres choses).
Evan Carroll