Существует ли автоматически прокручиваемая, задержанная по времени команда пейджера Unix?

10

Я бы хотел, чтобы вывод больших команд замедлился, например, показ слайдов, например, с автоматической задержкой 500 мс между каждой прокруткой. Какой самый простой способ добиться этого?

Блажей Величко
источник

Ответы:

8

Простое решение с использованием bash:

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

использование

long_command | scroll [delay]

delayне является обязательным и по умолчанию 0.5.

Выход с Ctrl+C

Кир
источник
1
Я не знаю, почему мое редактирование отклонено, но echo /** имейте в виду, что в вашем выводе long_command (например, catв файле) застрянет и запустит сеанс терминала, если вы не поставите двойные кавычки "$REPLY".
皞 皞
1
@ 林果 皞 одобрил и удалил предупреждение, спасибо. Я должен был добавить цитаты в первую очередь.
cYrus
... Я добавил предупреждение только потому, что система не позволяет редактировать только 2 символа.
皞 皞
4

Если вы можете жить с разрешением 1с, вы могли бы сделать tail -n +0 -f -s <seconds>.

Николь Гамильтон
источник
2
Выходные данные, long_commandвозможно, генерируются менее чем за секунду, поэтому нет смысла опрашивать их полноту, <interval>и они действительно не работают для меня.
cyrus
2

Вы можете использовать vimс соответствующим отображением для достижения этого:

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

Ctrl-dпрокручивает половину страницы за раз, замените на, 10jчтобы прокрутить 10 строк за раз.

Тор
источник