Como gravar todo o scrollback de uma sessão tmux em um arquivo?
capture-panel
pode pegar a tela atual, mas não o scrollback inteiro.
Isso depende do valor history-limit
que você definiu no seu .tmux.conf
- o padrão é 2000; se você deseja capturar mais, precisará definir explicitamente o número de linhas.
Para capturar o scrollback inteiro, entre no modo de cópia, selecione o scrollback inteiro e puxe-o no buffer e cole-o no seu arquivo.
Como você conseguirá isso dependerá da mode-keys
opção que você preferir, vi ou emacs. man tmux
possui uma tabela útil que descreve as respectivas chaves.
Tenho o seguinte no meu .tmux.conf
para simplificar isso:
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
O processo para capturar o scrollback completo é então:
PrefixEsc : para entrar no modo de cópia
v : para iniciar a seleção visual (supondo que você já esteja na parte inferior da tela)
gg : para capturar tudo na rolagem
y : para puxá-lo para o buffer
Prefixc : abrir outra janela do tmux
vim scrollback.txt
i : entre no modo de inserção no vim
Prefixp : colar no arquivo
Também há uma resposta aqui descrevendo como copiar o buffer para um arquivo temporário usandoxsel
isso pode ser útil.
:set paste
vim, o vim ignorará a adição de indentações automáticas ou qualquer combinação de teclas baseada em inserção..tmux.conf
...Para quem procura uma resposta simples, basta usar prefix+ :e digite
capture-pane -S -3000
+ return(Substitua3000
por quantas linhas você desejar salvar.) Isso copia essas linhas em um buffer.Em seguida, para salvar o buffer em um arquivo, basta usar prefix+ :novamente e digite
save-buffer filename.txt
+ return, substituindo ofilename
que desejar.(Por padrão, prefixé ctrl + b.)
fonte
save-buffer filename.txt
parece salvar o arquivo/
, não nopwd
(diretório atual). Em vez disso, eu forneci um caminho de arquivo absoluto e funcionou como um encantoCom o tmux 1.5, o
capture-pane
comando aceita-S
e-E
especifica as linhas inicial e final da captura; valores negativos podem ser usados para especificar linhas do histórico. Depois de ter os dados em um buffer, você pode salvá-los comsave-buffer
.Aqui está um exemplo de ligação (adequado para
.tmux.conf
) que encerra tudo com um prompt para o nome do arquivo:Isso captura (até) 32768 linhas do histórico mais as linhas exibidas no momento. A partir do tmux 1.6, você pode usar números até INT_MIN se o seu painel tiver um histórico mais profundo que as linhas de 32Ki (geralmente até 2Gi). A partir do tmux 2.0, você pode usar
capture-pane -S -
para significar "iniciar no início do histórico" (ou seja, nenhum número negativo grande e codificado).Nota: O número de linhas no arquivo salvo nem sempre será igual ao limite do histórico do painel mais sua altura.
Quando o buffer de histórico de um painel está cheio, o tmux descarta os 10% mais antigos das linhas em vez de descartar apenas uma linha. Isso significa que a profundidade efetiva do histórico de um painel às vezes será tão baixa quanto 90% do seu limite configurado.
fonte
tmux server-info | head -1
para ver sua versão.tmux -V
funciona no tmux * 1.4 e posterior.[PrefixKey] :
para chegar à linha de comando do tmux e colar a linha inteira, basta fazer[Prefix] P
o P maiúsculo e pronto .Eu tinha ligações de teclas padrão que pareciam ser um pouco diferentes da resposta de @ jasonwryan e não mudaram nada na configuração.
Abaixo está a receita que funcionou para mim. Talvez você ache isso útil se não quiser fazer alterações na configuração do tmux e apenas desejar copiar rapidamente algumas das rolagens.
Prefix== Ctrl+bno meu tmux (tmux 1.6, debian 7).
fonte
Se você quiser algo que possa ser executado a partir da linha de comando (em vez de usar suas chaves de prefixo tmux), tente executar:
Se você executá-lo e parece que não faz nada, é porque está exibindo exatamente o que estava na tela e fica com a mesma aparência.
Obviamente, você também pode canalizá-lo para um arquivo:
Consulte a
tmux
página de manual e procure porcapture-pane
mais coisas que você pode fazer (como capturar seqüências de escape no caso de preservar a cor ou especificar se deseja unir várias linhas visuais quando elas não contiverem uma nova linha)fonte
Aqui está um plugin tmux que permite isso:
https://github.com/tmux-plugins/tmux-logging
Após a instalação, salve o scrollback inteiro com
prefix + alt-shift-p
.fonte
Isso é realmente muito fácil. Entre no modo de comando, pressione
prefix key
então:
. Então façacapture-pane -S -<line number you want to dump>
Entãosave-buffer <filepath>
Esse arquivo contém toda a saída de rolagem. Você deve excluir o buffer posteriormente por motivos de segurança.
fonte
Eu uso isso no meu ~ / .tmux.conf e agora, quando saio do shell em execução, a saída do painel é salva em um arquivo de log exclusivo:
fonte