
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:
Eu estava pensando em duas opções:
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.
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 more
e less
, dois pagers comumente usados, que podem ser suficientes para alguns comandos.
Responder2
Usando o screen
buffer 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 -L
argumento 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:
- Manter registro do que fiz, pois posso salvar o arquivo de log na pasta do projeto para referência futura.
- Você pode monitorar o processo de forma inativa e passiva:
- use
tail -F
para monitorar o progresso em tempo real sem estar conectado à tela. - use
grep
para 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.
- use
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, ~/.screenrc
mas 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 -l
comando ou use a tecla Enter para percorrer os resultados linha por linha.