Role dentro da tela ou pause a saída

286

Eu uso a tela para minhas tarefas de linha de comando enquanto gerencio os servidores onde trabalho. Eu geralmente executo pequenos comandos (principalmente tarefas do sistema de arquivos), mas às vezes executo tarefas mais extensas (como DBA).

A saída dessas tarefas é importante para mim. Desde que eu uso Ubuntu e OS X (ambos Terminal Windows) para minhas tarefas, mas eu preciso usar a tela, a rolagem não está disponível, portanto, qualquer saída longa (acho que uma tabela de 500 linhas de um select) é invisível para mim. A roda do mouse está fora de questão.

Quando eu digo "o pergaminho é invisível para mim, quero dizer isso:

Euestavapensandoemduasopções:

  1. Pause(pensepaginar)asaídadeumdeterminadocomando.Quandoasaídacomeça,elemedeixaleroqueestáacontecendo,entãoeupressiono"Enter", então a saída continua até que não haja mais nada para mostrar.

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

É claro que não sei se essas opções são realmente possíveis . Se eles são, como podem alcançá-los? Outras alternativas serão bem recebidas.

    
por AeroCross 07.06.2012 / 19:32

4 respostas

383

A tela tem seu próprio buffer de rolagem, já que é um multiplexador de terminal e tem que lidar com vários buffers.

Talvez exista 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):

  • Bata sua combinação de prefixo de tela ( C-a / controle + A por padrão), então pressione Escape .

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

  • Quando estiver pronto, pressione q ou Escape para voltar ao final do buffer de rolagem.

(Se ao invés de q ou Escape você pressionar Enter ou Retornar e então mover o cursor, você estará selecionando texto para copiar, e pressionando Enter ou Return pela segunda vez, copiá-lo. Então você pode colar com C-a seguido por ] .)

Claro, você sempre pode usar more e less , dois pagers comumente usados, o que pode ser suficiente para alguns comandos.

    
por 07.06.2012 / 19:46
137

Usando o buffer screen como apontado por njsg é uma boa solução. Você também pode desabilitar o buffer de texto alternativo nas informações internas do termo term da xterm. 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 ~/.screenrc .

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

Você pode ler mais discussões aqui .

    
por 07.06.2012 / 20:15
16

Todas essas respostas abordaram como navegar em uma sessão de tela, mas há uma funcionalidade incorporada no comando screen para armazenar tudo em um arquivo através do argumento -L de acordo com o manual que diz:

-L tells screen to turn on automatic output logging for the windows.

para que você possa fazer:

screen -L -S testscreen

e ele criará um arquivo com o screenlog.# , em que # é um número para essa tela, começando em 0.

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

  1. Manter registro do que eu fiz desde que eu possa salvar o arquivo de log na pasta do projeto para referência futura.
  2. Você pode monitorar de forma inativa e passiva o processo:
    • use tailf para monitorar o progresso em tempo real sem estar conectado à tela.
    • use grep para verificar determinado termo no registro e produzir notificações (e-mail, pop-up, voip etc.). Isso pode ser aplicado em várias telas sem que você esteja olhando ativamente para elas.
por 08.02.2018 / 15:24
2

Eu obtive êxito ao obter paginação básica canalizando o conteúdo para more , por exemplo:

ls -l | more

Ou, se você quiser uma saída em cores para casos de uso como realce de sintaxe, use

ls -l --color=always | more

Isso resulta em uma saída que posso facilmente folhear uma tela por vez. Eu não tentei a modificação de @uther para ~/.screenrc , mas isso parece preferível como uma solução duradoura quando um mouse está disponível.

Para experimentar, você pode ir para este emulador BusyBox e depois ...

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

Use a barra de espaço para percorrer os resultados do comando ls -l ou use a tecla enter para percorrer os resultados linha a linha.

    
por 02.04.2015 / 19:38