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.


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)


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.