我希望能够得到tail -F
一些输出,但不能让它回滚整个缓冲区,而只能在有限的行数(例如 5 行)内滚动。
我怎样才能做到这一点?
我试过
tail -F -n 5 /tmp/dump
但这似乎不起作用 - 滚动行占据了整个缓冲区
以下解决方案不太漂亮 - 它使用 ANSI 转义序列 - 但我认为它大致可以满足您的需求,而无需使用watch
:
while true; do
tail -5 /tmp/dump | cut -c1-80
printf '\e[5A'
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
该序列\e[5A
意味着上升五行。可以5
替换为您想要的任何数字。
也就是说,对于这种事情,您最好使用类似诅咒的库。使用原始 ANSI 转义序列是不可移植的。tput
可在 Linux 和 Cygwin 中使用。该cuu
能力向上移动。
while true; do
tail -5 /tmp/dump | cut -c1-80
tput cuu 5
sleep 1
done
Run Code Online (Sandbox Code Playgroud)