Copia del buffer di scorrimento dello schermo GNU in un file (copia cartacea estesa)


188

Come copio facilmente il buffer di scorrimento dello schermo GNU in un file? Cioè, una versione più potente del comando 'hardcopy'?

Nella schermata GNU, posso usare " Ctrl+ A Esc" per accedere al buffer di scorrimento. Potrei quindi contrassegnare l'intero buffer e utilizzare " Ctrl+ A Ctrl+ ]" per incollarlo in un buffer Emacs , salvandolo in un file.

Tuttavia, questo è noioso. Esiste un comando Screen che copia semplicemente il buffer di scrollback in un file, come fa 'hardcopy' per la parte visibile dello schermo?

Risposte:


284

Per scrivere l'intero contenuto del buffer di scorrimento in un file, digitare

Ctrl+ Ae : per passare alla modalità di comando, quindi

hardcopy -h <filename>

Nelle versioni precedenti di screen, se lo fai hardcopy -h, scrive solo nel file -h. Ciò è stato risolto nella versione 4.2.0, quindi hardcopy -hscrive hardcopy.Ndove si Ntrova il numero della finestra corrente.


1
Nota che il file viene salvato nella home directory - almeno per me. Grazie per la risposta, a proposito!
Ritesh,

2
@allrite: viene salvato in $ PWD (se non si fornisce il percorso completo), non esiste un comportamento speciale.
Pushpendre,

9
Sì, ma viene salvato nella $ PWD da cui hai iniziato la schermata. Non nella $ PWD della sessione dello schermo.
Seumasmac,

7
Si noti che se si dispone di un buffer di scorrimento lungo e non contiene molto, il file salvato potrebbe apparire vuoto perché le prime decine o centinaia di righe sono vuote e il contenuto è alla fine.
Terry Brown,

3
Un'ulteriore nota sulla posizione in cui viene salvata l'hardcopy: se si screen -resegue il cd in una directory e quindi si riconnette a una sessione esistente, l'hardcopy non viene salvata nella directory attiva all'interno della schermata o in quella in cui si trovava prima dell'uso screen -r. Penso che venga salvato nella directory in cui ti trovavi quando hai iniziato la sessione schermo. Potresti essere in grado di cambiarlo con il comando hardcopydir .
Matthias Fripp,

25

Premere Ctrl+ A : bufferfile /tmp/somefile.txt ENTER , quindi Ctrl+A >

Questo scriverà il contenuto corrente del buffer nel file indicato.


Ho provato questo, e il "ctrl-a>" dice "Non è successo niente". Il primo passo ha detto "Bufferfile ora è '/tmp/foo.txt'", ma non sembra nemmeno creare quel file.

1
Sei sicuro di aver copiato qualcosa nel buffer dello schermo usando Ctrl + A [? Sembra che il tuo buffer potrebbe essere vuoto - non copierà l'intero buffer di scrollback, solo la parte selezionata usando Ctrl + A [
Roshan,

2
Ah, stavo cercando un collegamento per copiare l'intero buffer senza usare ctrl-a [

12

TL; DR: ^A:writebuf <filename>

L'OP sembra voler un modo per usare la porzione selezionata del buffer che si ottiene quando si fa un ^ A [, selezionando il testo usando lo spazio come inizio e fine, e quindi invece di usare ^ A] per incollare, salvare la porzione selezionata risultante del buffer in un file.

Questo ha funzionato:

^A:writebuf <filename>

Nota: una 'f' in writebuf


1
No OP vuole salvare l'INTERO buffer, non solo la parte selezionata. - OP

2
Ratti! Ci è mancato così tanto
Kevin Mullet,

4
Questo post è ancora utile. Buon lavoro.
Giustino,

1
Ho scoperto che per farlo funzionare sulla versione MacOSX dello schermo ho dovuto usare un percorso aboluto (es .: /Users/user1/path/to/file.txt)
jhrf

6

Prova hardcopy -ha includere l'intero buffer.


2
Questo fa solo una copia del file ~ / -h

2
@barrycarter: potrebbe essere cambiato nelle versioni più recenti. A partire dalla schermata 4.03.01, hardcopy -hscrive in hardcopy.N, dove si Ntrova il numero della finestra corrente.
Keith Thompson,

4

Questo ha funzionato per me:

Entra nella modalità modifica ( ~) e digita:

:hardcopy -h buff_file

Ha creato un file enorme, di cui il 98% era vuoto, ma i miei registri erano completamente presenti nel restante 2%.


-2

Ctrl+ A, :ed emettere il comando 'accedi'.

Oppure impostalo come predefinito nel tuo file .screenrc come 'deflog on'.


2
Penso che questo inizi a registrare tutto dopo aver eseguito quel comando. Non voglio registrare tutto (troppo dettagliato). Voglio solo catturare il buffer di scrollback come file.

-3

Do Ctrl+ A, H.

Che salva la schermata corrente in un file di copia cartacea, ad esempio, per lo schermo hardcopy.0 0. Sembra essere un modo più rapido che andare Ctrl+ A, :e digitando il cartaceo comando.


3
Sfortunatamente, ciò salva solo la parte VISIBILE dello schermo, non il buffer di scorrimento.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.