Как хвост -F, но оставить только прокрутку вывода в последние 5 строк - PullRequest
0 голосов
/ 27 сентября 2018

Я хотел бы иметь возможность tail -F некоторого вывода, но не иметь прокрутки всего буфера, только прокрутки внутри ограниченного числа строк, скажем, 5 строк.

Как я могу это сделать?

Я пытался

tail -F -n 5 /tmp/dump

, но, похоже, это не работает - строки прокрутки занимают весь буфер

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Следующее решение не очень красиво - оно использует escape-последовательность ANSI - но я думаю, что оно примерно соответствует тому, что вы хотите, без использования watch:

while true; do
    tail -5 /tmp/dump | cut -c1-80
    printf '\e[5A'
    sleep 1
done

Последовательность \e[5A означает увеличениепять строк.5 можно заменить на любое число, которое вы захотите.

Тем не менее, вам лучше использовать библиотеку, похожую на проклятья, для подобных вещей.Использование необработанных escape-последовательностей ANSI не переносимо.tput доступно в Linux и Cygwin.Возможность cuu перемещается вверх по линиям.

while true; do
    tail -5 /tmp/dump | cut -c1-80
    tput cuu 5
    sleep 1
done
0 голосов
/ 27 сентября 2018

tail -5f /tmp/dump Странно, но в разных дистрибутивах все по-другому.По какой-то причине --retry не работает с ним.

...