Existe-t-il une commande de pager Unix à défilement automatique et temporisé?

10

Je voudrais voir la sortie des grosses commandes ralenties, comme un diaporama avec par exemple automatique, un délai de 500 ms entre chaque défilement. Quelle est la manière la plus simple d'y parvenir?

Blazej Wieliczko
la source

Réponses:

8

Une solution simple utilisant bash:

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

Usage

long_command | scroll [delay]

delayest facultatif et par défaut 0.5.

Sortez avec Ctrl+C

cYrus
la source
1
Je ne sais pas pourquoi ma modification est rejetée, mais soyez averti que echo /** dans votre sortie de long_command (par exemple catun fichier) bloquera et inondera votre session de terminal si vous ne mettez pas de guillemets "$REPLY".
林果 皞
1
@ 林果 皞 a approuvé et supprimé l'avertissement, merci. J'aurais dû ajouter les citations en premier lieu.
cYrus
... J'ai ajouté l'avertissement juste parce que le système ne permet pas de modifier que 2 caractères.
林果 皞
4

Si vous pouvez vivre avec une résolution de 1s, vous pouvez le faire tail -n +0 -f -s <seconds>.

Nicole Hamilton
la source
2
La sortie de long_commandest peut-être générée en moins d'une seconde, il n'y a donc aucun intérêt à interroger pour son exhaustivité à chaque fois <interval>et en fait ne fonctionne pas pour moi.
cYrus
2

Vous pouvez utiliser vimun mappage approprié pour y parvenir:

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

Ctrl-dfait défiler une demi-page à la fois, remplacez par 10jpour faire défiler 10 lignes à la fois.

Thor
la source