Obter conteúdo do buffer de rolagem do TMux

13

Com o TMux, existe alguma maneira de recuperar programaticamente o conteúdo do buffer de rolagem acima da linha de comando atual?

Basicamente, estou olhando para escrever um script bash para iterar para cima até encontrar uma string correspondente. Para ser claro, não quero passar pelo histórico de comandos digitados; Eu quero passar por tudo que apareceu no console.

mahemoff
fonte

Respostas:

21

Com o tmux 1.5 (e posterior), você pode dar números negativos à -Sopção de capture-paneacessar o buffer de rolagem para trás.

Exemplos:

  • Capture (até) 32768 linhas do buffer de rolagem para trás junto com o texto atual do painel:

    tmux capture-pane -pS -32768
    
  • Capture apenas a décima linha "rolada" mais recentemente:

    tmux capture-pane -pS -10 -E -10
    
  • Capture (até) as 100 linhas mais recentes “roladas”:

    tmux capture-pane -pS -100 -E -1
    
  • Capture onze linhas que abrangem a linha superior atual do painel (5 linhas "roladas" e as 6 principais linhas do painel):

    tmux capture-pane -pS -5 -E 5
    

Nota: Como na maioria dos comandos do tmux , você pode usar -tpara direcionar um painel específico se o painel "atual" não for o que você está interessado em investigar.


Os exemplos acima também usam a -popção para capture-pane, que está disponível apenas a partir do tmux 1.8. Com versões mais antigas, você poderia evitar isso usando save-buffer:

tmux capture-pane -S -32768 \; save-buffer - \; delete-buffer
Chris Johnsen
fonte
Ótimo, executar isso em qualquer painel é ainda melhor do que se esperava.
Mahemoff 21/04