Salvar o scrollback atual do terminal no arquivo?

24

Estou procurando uma resposta para isso e não encontrei nada que me faça pensar que não é possível, mas ...

É possível salvar o buffer de rolagem atual do Gnome Terminal em um arquivo?

Eu sei que posso fazer algo como command > output.txtredirecionar toda a saída para um arquivo ou command | tee output.txtdividir a saída no terminal e também em um arquivo. O que estou tentando fazer é capturar isso após o fato. Gostaria de salvar o conteúdo de rolagem da guia do terminal atual em um arquivo.

Karl Wilbur
fonte
kittyé um programa de terminal que pode fazer isso, infelizmente as fontes parecem terríveis (sem renderização de subpixel)
jberryman
Obrigado, @jberryman. Bom saber.
Karl Wilbur

Respostas:

37

Depois de um pouco de brincadeira, descobri que você pode:

  • triple-click a última linha
  • acertar shift + home
  • shift + click primeira linha
  • copiar com ctrl + shift + c(ou right-click> 'Copiar')

Agora cole-o em um arquivo de texto ... ou, usando, xselvocê pode enfiar a área de transferência em um novo arquivo, basta abrir uma nova guia e fazer:

xsel -o > out.txt

(Para instalar xselfaça sudo apt-get install xsel)

Karl Wilbur
fonte
5
O destaque pode ser feito mais facilmente: Edit-> Select All.
egmont
3
Essa é uma ótima resposta, pois faz você perceber que pode usar triple-click the last linee shift + home or the scrollbarir para o local exato desejado para o início da saída.
Chef Faraó
2
Aviso: não tente fazer isso com um grande scollback (muitos megabytes), pois pode travar o X (aconteceu comigo).
22417 Kevin Cox
Com muitos megabytes, é esperado um processamento lento. Seja paciente e deixe o computador funcionar. "Dê um segundo! Está indo para o espaço! Você pode dar um segundo para voltar do espaço ?!"
Karl Wilbur
Eu apenas tentei copiar um grande scrollback (saída rsync do backup de duas unidades de 2 TB durante a noite) usando o método Edit-> Select Allpara capturar a saída. Já se passaram 25 a 30 minutos e o Gnome Terminal ainda está trancado. Usando o Byobu, eu consegui iniciar o topGnome Terminal ainda em execução (aumentando o tempo da CPU); atualmente usando mais de 4.176g de RAM e subindo lentamente. Então, sim, com um scrollback muito grande, vai demorar um pouco. O X ainda está em execução (e Chrome, YouTube, Nautilus, Byobu etc.), mas o Gnome Terminal precisará de um minuto. Eu deveria ter planejado melhor.
Karl Wilbur
2

scriptO comando é apropriado quando você deseja salvar uma sessão do terminal em um arquivo e exibi-la posteriormente. Quando você chama script, lança seu shell e, quando terminar, basta digitar exit. Tudo ficará typescriptarquivado, a menos que você especifique o contrário.

Por exemplo,

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秒

No entanto, pode haver caracteres de controle no arquivo datilografado, como no comando ls, portanto, use o cat typescript | col -b > outputfile.txtcomando para redirecionar a saída limpa para o arquivo

Sergiy Kolodyazhnyy
fonte
5
Obrigado, mas isso é algo que precisa ser feito antes de você coletar informações valiosas no seu terminal. Eu precisava de uma solução posterior ao fato.
21915 Karl
1
É muito bom saber disso. Vou tentar no futuro.
21415 Karl Karl
@KarlWilbur :) Tenho certeza que você achará útil. Eu o uso muito para meus deveres de programação. Na verdade, há uma maneira para despejar o que está na tela em consoles TTY, mas gnome-terminal é um pouco mais complicado
Sergiy Kolodyazhnyy
@SergiyKolodyazhnyy Eu tento implementar isso no meu script python, mas não consigo sair do script executando "os.system (" exit "). No entanto, ele sai do terminal e salva a saída no arquivo.
mtkilic
@mtkilic O scriptcomando inicia um processo separado, portanto seu script python sendo pai do subprocesso está aguardando a saída do filho. É mais voltado para sessões interativas, mas se você deseja gravar uma sessão no interpretador Python, inicie o scriptcomando primeiro e inicie o intérprete segundo. O comando também deve ter -csinalizador para que você possa chamar, script -c pythonmas verifique com man script.
Sergiy Kolodyazhnyy 11/09/19