Role dentro da tela ou pause a saída

Role dentro da tela ou pause a saída

eu usotelapara minhas tarefas de linha de comando enquanto gerencio os servidores onde trabalho. Normalmente executo comandos pequenos (principalmente tarefas do sistema de arquivos), mas às vezes executo tarefas mais extensas (como DBA).

Osaídadessas tarefas é importante para mim. Como uso Ubuntu e OS X (ambos Terminal Windows) para minhas tarefas, mas preciso usar screen, a rolagem não está disponível, portanto, qualquer saída longa (pense em uma tabela de 500 linhas de uma seleção) é invisível para mim. A roda do mouse está fora de questão.

Quando digo "a rolagem é invisível para mim, quero dizer o seguinte:

topo ao usar a tela, no Mac OS X, durante a rolagem

Eu estava pensando em duas opções:

  1. Pausa (pensepaginar) a saída de um determinado comando. Quando a saída começa, me permite ler o que está acontecendo, então pressiono "Enter" e a saída continua até que não haja mais nada para mostrar.

  2. Role dentro da tela. Mas não sei se isso é possível.

Claro, não sei se essas opções são realmentepossível. Se forem, como podemos alcançá-los? Outras alternativas serão bem recebidas.

Responder1

A tela possui seu próprio buffer de rolagem, pois é um multiplexador de terminal e precisa lidar comdiversosbuffers.

Talvez haja uma maneira melhor, mas estou acostumado a rolar usando o "modo de cópia" (que você pode usar para copiar texto usando a própria tela, embora isso também exija o comando colar):

  • Pressione a combinação de prefixo da tela ( C-a/ control+ Apor padrão) e pressione Escapeou [.

  • Mova para cima e para baixo com as teclas de seta ( e ).

  • Quando terminar, pressione qualquer tecla, exceto teclas de seta, números e certas letras, para voltar ao final do buffer de rolagem. A maioria das pessoas usa qouEscape

(Se em vez de sair você pressionar Enterou Spacee mover o cursor, você começará a selecionar o texto a ser copiado e pressionar Enterou Spaceuma segunda vez irá copiá-lo. Então você pode colar com C-aseguido de ].)

Claro, você sempre pode usar moree less, dois pagers comumente usados, que podem ser suficientes para alguns comandos.

Responder2

Usando o screenbuffer conforme apontadopor njsgé uma boa solução. Você também pode desativar o buffer de texto alternativo na tela interna de informações do xterm termcap. Quando desativado, você pode usar as barras de rolagem (e a roda do mouse) para rolar para cima e para baixo.

Adicione isso ao seu arquivo ~/.screenrc.

# Enable mouse scrolling and scroll bar history scrolling
termcapinfo xterm* ti@:te@

Você pode ler mais discussõesaqui.

Responder3

Todas essas respostas abordaram como navegar em uma sessão de tela, masexiste uma funcionalidade integrada no comando screen para armazenar tudo em um arquivoatravés do -Largumento de acordo com o manual que diz:

-L diz à tela para ativar o registro automático de saída para as janelas.

então você pode fazer:

screen -L -S testscreen

e criará um arquivo no diretório atual, com o nome screenlog.#onde #é um número para aquela tela começando em 0.

Isso tem muitas vantagens e as mais importantes para mim são:

  1. Manter registro do que fiz, pois posso salvar o arquivo de log na pasta do projeto para referência futura.
  2. Você pode monitorar o processo de forma inativa e passiva:
    • use tail -Fpara monitorar o progresso em tempo real sem estar conectado à tela.
    • use greppara verificar determinado termo no log e produzir notificações (e-mail, pop-up, voip, etc.). Isso pode ser aplicado em várias telas sem que você olhe ativamente para elas.

Responder4

Tive sucesso ao obter paginação básica canalizando conteúdo para more, por exemplo:

ls -l | more

Ou, se desejar saída colorida para casos de uso como realce de sintaxe, você pode usar

ls -l --color=always | more

Isso resulta em uma saída que posso facilmente percorrer uma tela por vez. Não tentei a modificação do @uther, ~/.screenrcmas parece preferível como uma solução duradoura quando um mouse está disponível.

Para experimentar isso, você pode ir paraeste emulador BusyBoxe então...

cd ~/bin
ls -l --color=always | more

Use a barra de espaço para percorrer os resultados do ls -lcomando ou use a tecla Enter para percorrer os resultados linha por linha.

informação relacionada