Como rolar para cima na janela do terminal enquanto novas entradas são geradas sem que sejam lançadas de volta para o fundo (Linux)

37

No Ubuntu, quero rolar para cima enquanto um comando está sendo executado na minha janela do terminal e gera uma nova saída (na verdade, o comando em execução é rspec). Posso rolar para cima, mas cada vez que o rspec gera uma nova linha de saída do console, ele me joga de volta para baixo. Existe uma maneira de rolar tudo para cima? Estou usando o terminator no Linux Mint / Ubuntu 12.04 LTS

ATUALIZAR

Encontrei uma possível solução alternativa na página inicial do Terminator que, com

stty ixon

você pode ativar "Controle de fluxo XON / XOFF para saída do terminal. Poder pausar a saída digitando ^ S e retomar digitando ^ Q [...]"

Isso não é totalmente o que eu queria, sem ter que interromper a saída (e talvez me perguntando quando esqueci de ligá-la novamente), pensei que poderia haver uma tecla modificadora simples como shft-alt com rolagem da roda do mouse .. Qualquer melhores soluções?

Yo Ludke
fonte
Essa é uma coisa que eu realmente gosto no LXTerminal (LXDE).
Matthew Lundberg
Você está rolando pelo Shift-PgUp ou pela barra de rolagem?
ott--
@MatthewLundberg Normalmente, com a roda de rolagem do mouse, então a barra de rolagem. Mas também não funciona com shift-PgUp :( Posso ter dentro lxterminal de terminator, bem como, você sabe?
Yo Ludke
11
xfce4-terminaltem uma opção chamada Rolar na saída que você pode desmarcar e faz exatamente o que você pediu.
Martín Canaval 24/01
11
Como solução alternativa, você pode enviar a saída para um arquivo, abrir outro terminal e tail -f file.txtvê-lo como ele é gerado. Isso deixaria o seu primeiro terminal livre para rolar para trás e ainda permitir que você assista a saída em tempo real. Não é elegante, eu sei.
terdon

Respostas:

53

Embora eu esteja um pouco atrasado, estou postando isso aqui para que qualquer pessoa que venha aqui obtenha uma solução. Para mim, a solução para o mesmo problema foi:

Preferências do Terminator -> Guia Perfis -> Guia [sub] de rolagem -> Desmarque a opção 'Rolar na saída'.

O bom dessa opção é que ela ainda rolará na saída quando você estiver na parte inferior da saída, mas assim que você rolar para cima, ela será interrompida e não o incomodará, mesmo que o conteúdo da saída ainda esteja sendo gerado.

Eu espero que isso ajude

Chikitulfo
fonte
legal :) É possível criar um atalho para alternar essa opção?
precisa saber é o seguinte
11
Pesquisei um pouco, mas não encontrei nenhuma maneira de alterná-lo com um atalho no terminador. No entanto, como a opção está gravada no arquivo de configuração do terminador em "$ HOME / .config / terminator / config", deve ser possível atribuir um atalho global a um comando que ative e desative a opção diretamente no arquivo de configuração.
Chikitulfo 06/04
4
Ainda assim, fazer essa alteração no arquivo de configuração não afetará as instâncias do terminador em execução, mas apenas as novas instâncias do terminador iniciadas após a edição. Portanto, se você deseja alterná-lo em um terminador em execução, é necessário fazê-lo manualmente, em seguida. De qualquer forma, com a opção alternada para false, assim que você rola para a última linha, ela continua a rolagem automática na saída. Ele interrompe a rolagem automática apenas se você rolar manualmente para cima. Portanto, não vejo necessidade real de ativar e desativar a opção.
Chikitulfo 06/04
1

tail -f log.txt | lessserá atualizado para avançar para as novas informações e você poderá subir ou descer. Você também pode usar lessos recursos de pesquisa e assim por diante. Com o método de tubulação, você também pode analisar a saída em movimento.

E a mesma idéia, mas sem o tubo: less +F log.txt.
(Isso pressupõe que você possa trabalhar com seu conteúdo dessa maneira.)

A maneira antiga do Unix era pressionar Ctrl-S no seu terminal para parar e Ctrl-Q para reiniciar a rolagem de saída - este é basicamente o que o terminador está deixando você fazer stty ixon.
Com as barras de rolagem adicionadas, isso me parece bastante decente - pressione Control-S, role até o que quiser e, em seguida, Control-Q para voltar para baixo. Sim, ocasionalmente você esquecerá de interromper a saída.

Por ser excepcionalmente preguiçoso e por gostar da flexibilidade do redirecionamento de saída, usaria tail -f com o pipe (supondo que isso se encaixe no caso). Então eu posso parar, colocar uma seta para cima e adicionar algo como um grep, e ele ainda roda: tail -f tac_plus.log | less | egrep 'peerip'

Jogue alguns cats e teelá e você tem uma festa real.

belacqua
fonte
Eu queria usar isso para especificações do rspec - O problema é que, com as abordagens tail / less, as cores se perdem (a saída é preto e branco em vez de verde / vermelho se eu executar o comando diretamente)
Yo Ludke
@YoLudke Não estou familiarizado com o rspec ou como ele é colorido. Existem maneiras de passar as cores pelo grep, etc., mas isso pode não funcionar aqui. Você está fazendo algo como executar apontar rspec para um processo persistente / em loop / de longa execução e obter sua saída disso?
Belacqua