Salvare lo scrollback del terminale corrente su file?


24

Ho cercato una risposta a questo e non ho trovato nulla che mi faccia pensare che non sia possibile ma ...

È possibile salvare l'attuale buffer di scrollback di Gnome Terminal in un file?

So che posso fare qualcosa come command > output.txtreindirizzare tutto l'output su un file o command | tee output.txtdividere l'output sul terminale e su un file. Quello che sto cercando di fare è catturare questo dopo il fatto. Vorrei salvare il contenuto dello scrollback della scheda del terminale corrente in un file.


kittyè un programma terminale che può farlo, sfortunatamente i caratteri sembrano terribili (nessun rendering subpixel)
jberryman

Grazie, @jberryman. Buono a sapersi.
Karl Wilbur,

Risposte:


37

Dopo aver giocato un po 'ho scoperto che puoi:

  • triple-click l'ultima riga
  • colpire shift + home
  • shift + click prima linea
  • copia con ctrl + shift + c(o right-click> 'Copia')

Ora incollalo in un file di testo ... o, usando xselpuoi spingere i tuoi appunti in un nuovo file semplicemente aprendo una nuova scheda e facendo:

xsel -o > out.txt

(Per installare xseldo sudo apt-get install xsel)


5
L'evidenziazione può essere eseguita più facilmente: Edit-> Select All.
egmont,

3
Questa è un'ottima risposta perché ti fa capire che puoi usare triple-click the last linee shift + home or the scrollbarandare nella posizione esatta desiderata per l'inizio dell'output.
Chef Faraone

2
Attenzione: non provarlo con un grande scollback (molti megabyte) in quanto potrebbe appendere X (mi è successo).
Kevin Cox,

Con molti megabyte, è prevedibile un'elaborazione lenta. Sii paziente e lascia che il computer funzioni. "Dagli un secondo! Sta andando nello spazio! Puoi dargli un secondo per tornare dallo spazio ?!"
Karl Wilbur,

Ho appena provato a copiare un grande scrollback (output rsync dal backup di un paio di unità da 2 TB durante la notte) usando il metodo Edit-> Select Allper catturare l'output. Sono passati 25-30 minuti e Gnome Terminal è ancora chiuso. Usando Byobu, sono stato in grado di avviare topper vedere che Gnome Terminal è ancora in esecuzione (aumentando il tempo della CPU); attualmente utilizza oltre 4.176 g di RAM e si arrampica lentamente. Quindi, sì, con un grande scrollback, ci vorrà un po '. X è ancora in esecuzione (e Chrome, YouTube, Nautilus, Byobu, ecc.) Ma Gnome Terminal avrà bisogno di un minuto. Avrei dovuto pianificare meglio.
Karl Wilbur,

2

scriptIl comando è appropriato quando si desidera salvare una sessione terminale in un file e visualizzarlo in un secondo momento. Quando lo chiami scriptavvia la shell e quando hai finito, digita exit. Tutto sarà typescriptarchiviato se non diversamente specificato.

Per esempio,

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秒

Potrebbero essere presenti caratteri di controllo nel file dattiloscritto, ad esempio dal comando ls, quindi utilizzare il cat typescript | col -b > outputfile.txtcomando per reindirizzare l'output pulito sul file


5
Grazie, ma questo è qualcosa che deve essere fatto prima di aver raccolto informazioni preziose nel tuo terminale. Avevo bisogno di una soluzione concreta.
Karl Wilbur,

1
Questo è molto buono da sapere però. Ci proverò in futuro.
Karl Wilbur,

@KarlWilbur :) Sono sicuro che lo troverai utile. Lo uso molto per i compiti di programmazione. In realtà c'è un modo per scaricare ciò che è sullo schermo nelle console TTY, ma gnome-terminal è un po 'più complicato
Sergiy Kolodyazhnyy,

@SergiyKolodyazhnyy Cerco di implementarlo nel mio script Python, ma non riesco ad uscire dallo script facendo "os.system (" exit "). Tuttavia esce dal terminale e salva l'output in un file.
mtkilic

@mtkilic Il scriptcomando avvia un processo separato, quindi lo script python essendo genitore del sottoprocesso è in attesa dell'uscita del figlio. È pensato soprattutto per le sessioni interattive, ma se si desidera registrare una sessione nell'interprete Python, avviare scriptprima il comando e avviare l'interprete secondo. Il comando dovrebbe anche avere un -cflag in modo da poter chiamare script -c pythonma ricontrollare man script.
Sergiy Kolodyazhnyy,
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.