Czy istnieje automatycznie przewijane, opóźnione czasowo polecenie Unixa?


10

Chciałbym zobaczyć zwolnione działanie dużych poleceń, jak pokaz slajdów z np. Automatycznym opóźnieniem 500 ms między każdym przewijaniem. Jaki jest najprostszy sposób na osiągnięcie tego?

Odpowiedzi:


8

Proste rozwiązanie wykorzystujące bash:

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

Stosowanie

long_command | scroll [delay]

delayjest opcjonalny i domyślnie ustawiony na 0.5.

Wyjdź za pomocą Ctrl+C


1
Nie wiem, dlaczego moja edycja została odrzucona, ale ostrzegam, że echo /** w twoich wynikach komenda long_command (np. catPlik) utknie i zalej sesję terminalową, jeśli nie umieścisz podwójnych cudzysłowów "$REPLY".
林果 皞

1
@ 林果 皞 zatwierdził i usunął ostrzeżenie, dzięki. Powinienem był przede wszystkim dodać cytaty.
cyr

... Dodałem ostrzeżenie tylko dlatego, że system nie pozwala na edycję tylko 2 znaków.
林果 皞

4

Jeśli możesz żyć z rozdzielczością 1s, możesz to zrobić tail -n +0 -f -s <seconds>.


2
Dane wyjściowe long_commandsą prawdopodobnie generowane w mniej niż sekundę, więc nie ma sensu sondować ich kompletności za każdym razem <interval>i rzeczywiście nie działa dla mnie.
cyr

2

vimAby to osiągnąć, możesz użyć odpowiedniego mapowania:

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

Ctrl-dprzewija pół strony na raz, zamień na, 10jaby przewijać 10 linii na raz.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.