Existe um comando Unix pager com rolagem automática e com atraso de tempo?

10

Eu gostaria de ver a saída de grandes comandos desacelerada, como uma apresentação de slides com, por exemplo, atraso automático de 500ms entre cada rolagem. Qual é a maneira mais simples de conseguir isso?

Blazej Wieliczko
fonte

Respostas:

8

Uma solução simples usando bash:

function scroll
{
    while read -r ; do echo "$REPLY" ; sleep ${1:-0.5} ; done
}

Uso

long_command | scroll [delay]

delayé opcional e o padrão é 0.5.

Sair com Ctrl+C

cYrus
fonte
1
Não sei por que minha edição foi rejeitada, mas esteja avisado de que echo /** na sua saída de long_command (por exemplo, catum arquivo) travará e inundará sua sessão de terminal se você não colocar aspas duplas "$REPLY".
林果皞
1
@ 林果 皞 aprovou e removeu o aviso, obrigado. Eu deveria ter adicionado as aspas em primeiro lugar.
Cyrus
... Eu adicionei o aviso apenas porque o sistema não permite editar apenas 2 caracteres.
林果皞
4

Se você pode viver com 1s de resolução, você pode fazer tail -n +0 -f -s <seconds>.

Nicole Hamilton
fonte
2
A saída de long_commandé possivelmente gerada em menos de um segundo, portanto, não há sentido em pesquisar sua integridade a cada <interval>e, de fato, não funciona para mim.
precisa saber é o seguinte
2

Você pode usar vimcom um mapeamento apropriado para conseguir isso:

vim -c 'map <S-f20> L:redraw<cr>:sleep 500m<cr><C-d><S-f20>' -c 'execute "normal \<S-f20>"' -

Ctrl-drolar meia página por vez, substitua por 10jpara rolar 10 linhas por vez.

Thor
fonte