Acessar o buffer de rolagem do xterm como um arquivo

8

É possível, de alguma forma, acessar o buffer de rolagem do xterm como um arquivo (somente leitura) ou um dispositivo de caractere?

O principal problema (para evitar x / y "problemming"), é o seguinte: às vezes o comando que acabei de executar cria uma saída não determinística e eu gostaria de usá-la de alguma forma sem pensar em usá-la . No momento, a única maneira de fazer isso (que eu saiba) é usar o mouse para selecionar o texto na seleção primária.

John Z.
fonte
Alternativa ao uso tee. Você já pensou em executar scriptpara criar um log de todos os seus comandos em um arquivo?
Stephen Quan

Respostas:

6

Você pode fazer isso dizendo ao xterm para imprimir os dados usando a print-everythingação (normalmente não vinculada a uma chave).

Como alternativa, há uma sequência de escape documentada em XTerm Control Sequences :

CSI ? Pm i                                                                      
          Media Copy (MC), DEC-specific.                                        
            Ps = 1  -> Print line containing cursor.                            
            Ps = 4  -> Turn off autoprint mode.                                 
            Ps = 5  -> Turn on autoprint mode.                                  
            Ps = 1  0  -> Print composed display, ignores DECPEX.               
            Ps = 1  1  -> Print all pages.

que poderia ser invocado como

printf '\033[?11i'

Mas qualquer uma das abordagens (para gravar em um arquivo) precisaria de um comando de impressora configurado.

Thomas Dickey
fonte
É possível fazer isso sem reiniciar o xterm? Se envolver reiniciar o xterm, não é realmente uma resposta, pois isso causaria a perda da saída.
kasperd
Era isso que eu estava procurando. Os recursos podem ser recarregados em tempo real, e eu posso reiniciar o xterm. Eu criei um fifo nomeado e o configurei em printerCommand, vinculei o comando print-everything a uma chave e funciona exatamente como eu queria.
John Z.
2

Você sempre pode usar algo como o tmux, que fornece capture-paneo que você deseja, juntamente com divisões (verticais e horizontais) e multiplexação, suporte a sessões e várias outras coisas.

Ou usar um emulador de terminal diferente xfce4-terminaltambém é leve e fornece um fácilSave Contents

Evan Carroll
fonte
1
Para mim, isso não parece uma resposta para a pergunta. Nenhum desses programas pode capturar magicamente a saída que atualmente existe apenas em uma janela xterm.
precisa saber é o seguinte
@kasperd uma interpretação justa. Ele quer algo que captura sem pré-pensamento. Eu uso tmuxsem pré-pensamento. Então não tenho esse problema. Se você tiver o hábito de usar o tmux, nunca precisará pensar nisso novamente (ou em muitas outras coisas).
Evan Carroll