I'd like to view output of big commands slowed down, like a slideshow with e.g. automatic, 500ms delay between each scroll. What is the simplest way to achieve this?
Asked
Active
Viewed 2,451 times
3 Answers
9
A simple solution using bash:
function scroll
{
while read -r ; do echo "$REPLY" ; sleep ${1:-0.5} ; done
}
Usage
long_command | scroll [delay]
delay is optional and defaults to 0.5.
Exit with Ctrl+C
cYrus
- 21,379
- 8
- 74
- 79
-
1I don't know why my edit get rejected, but be warned that `echo /** ` in your output of long_command (e.g. `cat` a file) will stuck and flood your terminal session if you don't put double quotes on `"$REPLY"`. – 林果皞 Mar 21 '18 at 20:51
-
1@林果皞 approved and removed the warning, thanks. I should have added the quotes in the first place. – cYrus Mar 23 '18 at 13:49
-
... I added the warning just because system doesn't allow edit only 2 characters. – 林果皞 Mar 23 '18 at 13:57
4
If you can live with 1s resolution, you could do tail -n +0 -f -s <seconds>.
Nicole Hamilton
- 9,935
- 1
- 21
- 43
-
2The output from `long_command` is possibly generated in less than a second so there's no point in polling for its completeness every `
` and indeed doesn't work for me. – cYrus Sep 10 '12 at 22:25
2
You could use vim with an appropriate mapping to achieve this:
vim -c 'map <S-f20> L:redraw<cr>:sleep 500m<cr><C-d><S-f20>' -c 'execute "normal \<S-f20>"' -
Ctrl-d scrolls half a page at a time, replace with 10j to scroll 10 lines at a time.
Thor
- 6,419
- 1
- 36
- 42