Copie du tampon de défilement d'écran GNU dans un fichier (copie papier étendue)

188

Comment copier facilement le tampon de défilement de l'écran GNU dans un fichier? C'est-à-dire une version plus puissante de la commande «copie papier»?

Dans l'écran GNU, je peux utiliser " Ctrl+ A Esc" pour entrer dans le tampon de défilement. Je pourrais alors marquer le tampon entier et utiliser " Ctrl+ A Ctrl+ ]" pour le coller dans un tampon Emacs , le sauvegardant ainsi dans un fichier.

Cependant, c'est fastidieux. Existe-t-il une commande Screen qui copiera simplement le tampon de défilement dans un fichier, comme le fait «copie papier» pour la partie visible de l'écran?

Peter Mortensen
la source

Réponses:

284

Pour écrire tout le contenu du tampon de défilement dans un fichier, tapez

Ctrl+ Aet : pour passer en mode commande, alors

hardcopy -h <filename>

Dans les anciennes versions de screen, si vous le faites simplement hardcopy -h, il écrit simplement dans le fichier -h. Cela a été corrigé dans la version 4.2.0, donc hardcopy -hécrit hardcopy.NNest le numéro de la fenêtre actuelle.

Facture
la source
1
Notez que le fichier est enregistré dans le répertoire personnel - du moins pour moi. Merci pour la réponse, btw!
Ritesh
2
@allrite: Il est enregistré dans $ PWD (si vous ne donnez pas le chemin complet), il n'y a pas de comportement spécial.
Pushpendre
9
Oui, mais il est enregistré dans l' écran $ PWD où vous avez commencé . Pas dans le $ PWD de la session écran.
seumasmac
7
Notez que si vous avez une longue mémoire tampon de défilement et pas beaucoup dedans, le fichier enregistré peut apparaître vide parce que les premières dizaines ou centaines de lignes sont vides et le contenu est à la fin.
Terry Brown
3
Une autre remarque sur l'emplacement où la copie papier est enregistrée: Si vous effectuez un cd dans un répertoire et que vous l'utilisez screen -rpour vous reconnecter à une session existante, la copie papier n'est pas enregistrée dans l'écran intérieur Active Directory ou celui dans lequel vous étiez avant de l'utiliser screen -r. Je pense qu'il est enregistré dans le répertoire dans lequel vous vous trouviez lorsque vous avez démarré la session d'écran pour la première fois. Vous pourrez peut-être changer cela avec la commande hardcopydir .
Matthias Fripp
25

Appuyez sur Ctrl+ A : bufferfile /tmp/somefile.txt ENTER , puis sur Ctrl+A >

Cela écrira le contenu actuel du tampon dans le fichier nommé.

Roshan
la source
J'ai essayé ceci, et le "ctrl-a>" dit "Rien ne s'est passé". La première étape disait "Bufferfile est maintenant '/tmp/foo.txt'", mais ne semble même pas créer ce fichier.
1
Êtes-vous sûr d'avoir copié quelque chose dans la mémoire tampon d'écran en utilisant Ctrl + A [? Il semble que votre tampon soit vide - il ne copiera pas tout le tampon de défilement, juste la partie que vous avez sélectionnée en utilisant Ctrl + A [
Roshan
2
Ah, je cherchais un raccourci pour copier tout le buffer sans utiliser ctrl-a [
12

TL; DR: ^A:writebuf <filename>

L'OP semble vouloir un moyen d'utiliser la partie sélectionnée du tampon que vous obtenez lorsque vous faites un ^ A [, en sélectionnant du texte en utilisant l'espace comme début et en fin, puis au lieu d'utiliser ^ A] pour coller, enregistrez la partie sélectionnée résultante du tampon dans un fichier.

Cela a fonctionné:

^A:writebuf <filename>

Remarque: un 'f' dans writebuf

Kevin Mullet
la source
1
Non non. OP veut sauvegarder le tampon ENTIER, pas seulement la partie sélectionnée. - OP
2
Les rats! Ça l'a manqué beaucoup
Kevin Mullet
4
Cet article est toujours utile. Bon travail.
Justin E
1
J'ai trouvé que pour que cela fonctionne sur la version MacOSX de l'écran, je devais utiliser un chemin abolute (par exemple: /Users/user1/path/to/file.txt)
jhrf
6

Essayez hardcopy -hd'inclure tout le tampon.

Jorge Gutierrez
la source
2
Cela fait juste une copie papier dans le fichier ~ / -h
2
@barrycarter: Cela peut avoir changé dans les versions plus récentes. À partir de l'écran 4.03.01, hardcopy -hécrit dans hardcopy.N, où Nest le numéro de la fenêtre actuelle.
Keith Thompson
4

Cela a fonctionné pour moi:

Entrez en mode édition ( ~) et tapez:

:hardcopy -h buff_file

Cela a créé un énorme fichier, dont 98% était vide, mais mes journaux étaient pleinement présents dans les 2% restants.

Freeninza
la source
-2

Ctrl+ A, :Et exécutez la commande « journal sur ».

Ou définissez-le comme valeur par défaut dans votre fichier .screenrc comme «deflog on».

Brianray
la source
2
Je pense que cela commence à enregistrer tout après avoir exécuté cette commande. Je ne veux pas tout enregistrer (trop verbeux). Je veux juste capturer le tampon de défilement sous forme de fichier.
-3

Do Ctrl+ A, H.

Cela permet d' économiser l'écran en cours dans un fichier de copie papier, par exemple, hardcopy.0 pour écran 0. Il semble être un moyen plus rapide que d' aller Ctrl+ A, :et en tapant la copie papier commande.

Jeff
la source
3
Malheureusement, cela enregistre simplement la partie VISIBLE de l'écran, pas le tampon de défilement.