2011-01-26 19 views
143

¿Cómo copio fácilmente el buffer de desplazamiento de pantalla GNU a un archivo? IE, una versión más poderosa del comando 'copia impresa' ?Copiando el buffer de desplazamiento de pantalla de la pantalla GNU al archivo (copia impresa extendida)?

En la pantalla de GNU, puedo usar "Ctrl - unESC" para entrar en el desplazamiento hacia atrás búfer. Entonces podría marcar toda la memoria intermedia y el uso de "ctrl - un ctrl - ]" a pegarlo en un búfer de Emacs, ahorrando así en un archivo.

Sin embargo, esto es tedioso. ¿Hay un comando de pantalla que simplemente copie el búfer de desplazamiento en un archivo, como lo hace 'copia impresa' para la parte visible de la pantalla ?

Respuesta

214

Para escribir todo el contenido de la memoria intermedia de desplazamiento hacia atrás en un archivo, el tipo

Ctrl + Un y : para llegar al modo de comando , luego

hardcopy -h <filename> 

En versiones anteriores o f screen, si solo hace hardcopy -h, simplemente escribe en el archivo -h. Esto se corrigió en la versión 4.2.0, por lo que hardcopy -h escribe en hardcopy.N donde N es el número de ventana actual.

+6

Tuve que escribir Ctrl + A: para entrar en el modo de comando. – user85509

+0

Tenga en cuenta que el archivo se guarda en el directorio de inicio, al menos lo hizo para mí. Gracias por la respuesta, por cierto! – Ritesh

+2

@allrite: Se guarda en $ PWD (si no se proporciona la ruta completa), no hay un comportamiento especial. – Pushpendre

0

CTL-a: el comando tema 'conectarse'

o configurarlo en su defecto .screenrc como 'deflog en'

+2

Creo que esto simplemente comienza a registrar todo después de ejecutar el comando . No quiero registrar todo (demasiado detallado). Solo quiero capturar el buffer de scrollback como un archivo. – barrycarter

21

Prensa Ctrl +Un: bufferfile/tmp/Unarchivo.txtENTER, y luego Ctrl +Un>

Esto escribirá el contenido actual del búfer en el archivo nombrado.

+0

Intenté esto, y el "ctrl-a>" dice "No pasó nada". El primer paso decía "Bufferfile ahora es '/tmp/foo.txt'", pero parece que ni siquiera crea ese archivo. – barrycarter

+1

¿Estás seguro de haber copiado algo en el búfer de la pantalla usando Ctrl + A [? Parece que el búfer puede estar vacío: no copiará todo el búfer de retroceso, solo la parte que seleccionó usando Ctrl + A [ – Roshan

+2

Ah, estaba buscando un atajo para copiar todo el búfer sin usar ctrl-a [ – barrycarter

6

tratar hardcopy -h para incluir todo el búfer

+2

Esto solo hace una copia impresa en el archivo ~/-h – barrycarter

+0

@barrycarter: Eso puede haber cambiado en versiones más recientes. A partir de la pantalla 4.03.01, 'hardcopy -h' escribe en' hardcopy.N', donde 'N' es el número de ventana actual. –

3

Esto funcionó para mí: Entre en el modo de edición (~): continuación, escriba:

:hardcopy -h buff_file 

Se creó un archivo enorme, de los cuales el 98% estaba vacío pero mis registros eran totalmente presente en el 2% restante

-3

Ctrl-a h

que guarda la pantalla actual en un archivo de copia impresa, por ejemplo, para la pantalla hardcopy.0 0.Parece ser una forma más rápida que ir a Ctrl-A: y escribir el comando de copia impresa.

+3

Desafortunadamente, eso solo guarda la parte VISIBLE de la pantalla, no el buffer de desplazamiento. – barrycarter

3

TL; DR: ^A:writebuf <filename>

OP parece querer una manera de utilizar la parte seleccionada de la memoria intermedia se obtiene cuando se hace una^A [, selección de texto usando el espacio como el inicio y el final, a continuación, en lugar de utilizar^A] para pegar, guarde la porción seleccionada del búfer en un archivo.

sé que es años desde que este se ha publicado, pero yo estaba buscando una respuesta a la misma pregunta, y finalmente encontró:

^A:writebuf <filename>

nota: una 'f' en writebuf

+0

No, no. OP quiere guardar el búfer COMPLETO, no solo la parte seleccionada. - OP – barrycarter

+1

¡Ratas! Lo perdí por esto mucho –

+2

Esta publicación todavía es útil. Buen trabajo. –

Cuestiones relacionadas