linux– “tail -f”alternate不会滚动终端窗口

linux– “tail -f”alternate不会滚动终端窗口,第1张

概述我想连续检查一个文件,以查找不断变化的内容. “tail -f”不够,因为文件的大小不会增大.我可以在bash中使用一个简单的while循环来达到同样的效果:while [ 1 ]; do cat /proc/acpi/battery/BAT1/state ; sleep 10; done 虽然它有滚动我的终端窗口的不良影响,但它确实有效.所以现在我想知道,

我想连续检查一个文件,以查找不断变化的内容. “tail -f”不够,因为文件的大小不会增大.

我可以在bash中使用一个简单的while循环来达到同样的效果:

while [ 1 ]; do cat /proc/acpi/battery/BAT1/state ; sleep 10; done

虽然它有滚动我的终端窗口的不良影响,但它确实有效.

所以现在我想知道,是否有一个linux / shell命令可以在不滚动终端的情况下显示该文件的输出?

最佳答案结合其他答案中的几个想法以及其他一些技巧,这将输出文件而不清除屏幕或滚动(如果提示位于屏幕底部,则第一个周期除外).

up=$(tput cuu1)$(tput el); while true; do (IFS=$'\n'; a=($(

这显然是你不能手工输入的东西,所以你可以把它作为一个函数,它将文件名,更新之间的秒数,起始行和行数作为参数.

watchit () {    local up=$(tput cuu1)$(tput el) IFS=$'\n' lines    local start=${3:-0} end    while true    do        lines=($(<""))        end=${4:-${#lines[@]}}        echo "${lines[*]:$start:$end}"        sleep ${2:-1}        # go up and clear each line        printf "%.0s$up" "${lines[@]:$start:$end}"    done}

运行:

watchit /proc/acpi/battery/BAT1/state .5 0 6

第二个参数(更新之间的秒数)默认为1.第三个参数(起始行)默认为0.第四个参数(行数)默认为整个文件.如果省略行数并且文件增长,则可能导致滚动以容纳新行.

编辑:我添加了一个参数来控制更新的频率.

总结

以上是内存溢出为你收集整理的linux – “tail -f”alternate不会滚动终端窗口全部内容,希望文章能够帮你解决linux – “tail -f”alternate不会滚动终端窗口所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)