Gibt es einen automatisch scrollenden, zeitverzögerten Unix-Pager-Befehl?

10

Ich möchte die Ausgabe großer Befehle verlangsamen, wie eine Diashow mit z. B. automatischer Verzögerung von 500 ms zwischen den einzelnen Bildläufen. Was ist der einfachste Weg, um dies zu erreichen?

Blazej Wieliczko
quelle

Antworten:

8

Eine einfache Lösung mit bash:

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

Verwendung

long_command | scroll [delay]

delayist optional und standardmäßig 0.5.

Beenden Sie mit Ctrl+C

cYrus
quelle
1
Ich weiß nicht, warum meine Bearbeitung abgelehnt wird, aber seien Sie gewarnt, dass echo /** in Ihrer Ausgabe von long_command (z. B. cateine Datei) Ihre Terminalsitzung hängen bleibt und überflutet wird, wenn Sie keine doppelten Anführungszeichen setzen "$REPLY".
21 皞
1
@ 林果 皞 hat die Warnung genehmigt und entfernt, danke. Ich hätte die Zitate an erster Stelle hinzufügen sollen.
cYrus
... Ich habe die Warnung hinzugefügt, nur weil das System nicht zulässt, nur 2 Zeichen zu bearbeiten.
皞 皞
4

Wenn Sie mit einer Auflösung von 1s leben können, können Sie dies tun tail -n +0 -f -s <seconds>.

Nicole Hamilton
quelle
2
Die Ausgabe von long_commandwird möglicherweise in weniger als einer Sekunde generiert, daher macht es keinen Sinn, alle nach ihrer Vollständigkeit zu fragen, <interval>und das funktioniert bei mir in der Tat nicht.
cYrus
2

Sie können dies vimmit einer geeigneten Zuordnung verwenden:

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

Ctrl-dscrollt jeweils eine halbe Seite, ersetzt durch, 10jum 10 Zeilen gleichzeitig zu scrollen.

Thor
quelle