¿Guardar terminal actual scrollback al archivo?

24

He estado buscando una respuesta a esto y no encuentro nada que me haga pensar que no es posible, pero ...

¿Es posible guardar el búfer de desplazamiento hacia atrás del Terminal Gnome actual en un archivo?

Sé que puedo hacer algo como command > output.txtredirigir toda la salida a un archivo, o command | tee output.txtdividir la salida al terminal, así como a un archivo. Lo que estoy tratando de hacer es capturar esto después del hecho. Me gustaría guardar el contenido de desplazamiento de la pestaña del terminal actual en un archivo.

Karl Wilbur
fuente
kittyes un programa de terminal que puede hacer esto, desafortunadamente las fuentes se ven terribles (sin representación de subpíxeles)
jberryman
Gracias, @jberryman. Bueno saber.
Karl Wilbur

Respuestas:

37

Después de jugar un poco, descubrí que puedes:

  • triple-click la ultima linea
  • golpear shift + home
  • shift + click primera linea
  • copiar con ctrl + shift + c(o right-click> 'Copiar')

Ahora péguelo en un archivo de texto ... o, usando xselpuede empujar su portapapeles a un nuevo archivo simplemente abriendo una nueva pestaña y haciendo:

xsel -o > out.txt

(Para instalar xselhacer sudo apt-get install xsel)

Karl Wilbur
fuente
55
El resaltado se puede hacer más fácilmente: Edit-> Select All.
egmont
3
Esta es una gran respuesta porque te hace darte cuenta de que puedes usar triple-click the last linee shift + home or the scrollbarir a la ubicación exacta que deseas para el comienzo de la salida.
Chef Faraón
2
Advertencia: no intente esto con un gran desplazamiento (muchos megabytes) ya que podría colgar X (me pasó a mí).
Kevin Cox
Con muchos megabytes, se espera un procesamiento lento. Sea paciente y deje que la computadora funcione. "¡Dale un segundo! ¡Va al espacio! ¡¿Puedes darle un segundo para regresar del espacio ?!"
Karl Wilbur
Acabo de intentar copiar un gran desplazamiento hacia atrás (salida rsync al hacer una copia de seguridad de un par de unidades de 2 TB durante la noche) usando el método Edit-> Select Allpara capturar la salida. Han pasado 25-30 minutos y la Terminal de Gnome todavía está encerrada. Usando Byobu, pude iniciar toppara ver que Gnome Terminal todavía está funcionando (aumentando el tiempo de CPU); Actualmente utiliza más de 4.176 g de RAM y sube lentamente. Entonces, sí, con un desplazamiento muy grande, tomará un tiempo. X todavía se está ejecutando (y Chrome, YouTube, Nautilus, Byobu, etc.) pero Gnome Terminal necesitará un minuto. Debería haber planeado mejor.
Karl Wilbur
2

scriptEl comando es apropiado cuando desea guardar una sesión de terminal en un archivo y mostrarla más tarde. Cuando lo llame script, iniciará su shell, y cuando haya terminado, simplemente escriba exit. Todo estará en el typescriptarchivo a menos que especifique lo contrario.

Por ejemplo,

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015年 10月 27日 星期二 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit
Script done, file is typescript
xieerqi@eagle:~$ cat typescript 
Script started on 2015年10月27日 星期二 11时37分55秒

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015年 10月 27日 星期二 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit

Script done on 2015年10月27日 星期二 11时38分18秒

Sin embargo, puede haber caracteres de control en el archivo de mecanografiado, como los del comando ls, así que use el cat typescript | col -b > outputfile.txtcomando para redirigir la salida limpia al archivo

Sergiy Kolodyazhnyy
fuente
55
Gracias, pero esto es algo que debe hacerse antes de que haya recopilado información valiosa en su terminal. Necesitaba una solución posterior.
Karl Wilbur
1
Sin embargo, es muy bueno saberlo. Lo intentaré en el futuro.
Karl Wilbur
@KarlWilbur :) Estoy seguro de que lo encontrará útil. Lo uso mucho para mi tarea de programación. En realidad, hay una manera de volcar lo que está en la pantalla en las consolas TTY, pero gnome-terminal es un poco más complicado
Sergiy Kolodyazhnyy
@SergiyKolodyazhnyy Intento implementar esto en mi script de Python, pero no puedo salir del script haciendo "os.system (" exit "). Sin embargo, sale del terminal y guarda la salida en el archivo.
mtkilic
@mtkilic El scriptcomando inicia un proceso separado, por lo que su secuencia de comandos de Python que es un padre del subproceso está esperando a que salga el hijo. Significa más para sesiones interactivas, pero si desea grabar una sesión en el intérprete de Python, inicie el scriptcomando primero e inicie el intérprete en segundo lugar. El comando también debe tener una -cmarca para que pueda llamar, script -c pythonpero verifique con man script.
Sergiy Kolodyazhnyy