在 UNIX shell 下,如何才能获得与命令类似的效果watch
,但使用分页,以便如果输出占用多个屏幕,我可以在输出中滚动?
换句话说,我想要一个能够watch
实现less
的程序cat
。
举个例子,假设我想观察qstat
,我可以使用
watch qstat
观察 qstat 的输出,但这只能显示第一个屏幕。
使用 的分页版本watch
,我将能够在输出中移动,因为它仍会通过 不断更新watch
。目前有没有办法使用现有实用程序做到这一点?
答案1
不要修改‘watch’命令,而是使用屏幕!
例如,假设您需要能够看到 300 行高和 100 个字符宽,并在其周围移动。启动屏幕后,强制大小如下:
C-a :height -w 300
C-a :width -w 100
现在启动你的监视命令。然后你可以使用C-a <ESC>
它来翻阅显示内容。
不幸的是,在复制模式下,显示不会刷新。但是,如果您想调整正在查看的窗口部分,最简单的方法可能是重新运行高度/宽度命令,因为默认情况下,您的终端会显示虚拟窗口的右下角。
答案2
您可以尝试以下操作:
$ while vmstat; do sleep 1; done | less
替换vmstat
为qstat
并调整以sleep
满足您的需要。
答案3
答案4
我实现了一个简单的python脚本来满足这个请求,名为“watchall”
获取方式: pip 安装 watchall
用 watchall 替换 watch 并享受可滚动屏幕。现在它仅支持 -n 和 -d 标志。