David Dean Asked: 2009-08-06 20:33:30 +0800 CST2009-08-06 20:33:30 +0800 CST 2009-08-06 20:33:30 +0800 CST 有分页版的`watch`吗? 772 在Unix Shell下,如何获得与watch命令相似的效果,但是使用分页,以便如果占用多个屏幕,我可以在输出中滚动? 换句话说,我想要一个程序是watch什么less是什么cat。 例如,假设我想观看 的输出qstat,我可以使用 watch qstat 观看qstat的输出,但这只能显示第一个屏幕。 使用 的分页版本watch,我将能够在输出中移动,因为它仍会持续更新watch. 目前有没有办法用现有的实用程序来做到这一点? unix shell less paging watch 13 个回答 Voted Best Answer MikeyB 2009-08-13T07:31:52+08:002009-08-13T07:31:52+08:00 与其修改“watch”命令,不如使用 screen! 例如,假设您需要能够看到 300 行的高度和 100 个字符的宽度并在其周围移动。启动屏幕后,强制调整大小: C-a :height -w 300 C-a :width -w 100 现在开始你的 watch 命令。然后,您可以使用C-a <ESC>在显示屏上翻页。 不幸的是,在复制模式下显示不会刷新。但是如果你想调整你正在查看的窗口的哪个部分,最简单的方法可能是重新运行高度/宽度命令,因为默认情况下你的终端显示虚拟窗口的右下角。 Spacen Jasset 2009-08-08T01:51:33+08:002009-08-08T01:51:33+08:00 你可以试试这个: $ while vmstat; do sleep 1; done | less 替换vmstat为并根据您的需要进行qstat调整。sleep Lester Cheung 2009-08-14T18:45:46+08:002009-08-14T18:45:46+08:00 多尾:http ://www.vanheusden.com/multitail/ 例子: vmstat 1 |multitail -j 按“b”和向上/向下翻页/箭头向后滚动。 David Dean 2009-08-06T21:22:27+08:002009-08-06T21:22:27+08:00 好的,我已经参加了一个watchless活动。这有点粗糙,而且似乎还没有完全起作用,但是这里有: #!/bin/bash -u out=$(mktemp) (while [ 1 ]; do "$@" > $out; sleep 2; done) & less $out kill $! 您必须手动使用Rless 键来更新显示。 它似乎适用于watchless date但不适用于watchless qstator watchless pstree,两者都显示为空白。有任何想法吗? enkrs 2009-08-12T10:06:11+08:002009-08-12T10:06:11+08:00 我看不出随着行内容的变化,如何实现这一目标,watch即使您可以向下滚动,也将每2秒重置每2秒钟。 一些解决方法是: watch 'qstat | tail -n40'从底部的第 40 行开始显示 qstat 的输出 watch 'qstat | grep jsmith'grep 输出,以便您感兴趣的行始终在第一个屏幕中。 请注意,您需要将管道周围的命令放在单引号中 - 否则您将通过管道输出watch,而不是qstat. anon 2009-08-12T10:28:54+08:002009-08-12T10:28:54+08:00 要继续 enkrs 的回答, 观看'qstat | 头-300 | 尾巴 -15' 会让你任意页面进入 qstat 的输出。 Shawn Chin 2009-08-13T08:04:43+08:002009-08-13T08:04:43+08:00 这是一个相当粗略的脚本,似乎适用于我向它抛出的几个命令 #!/bin/bash # ---- mywatch.sh ---- if [ $# -lt 1 && $# -gt 2 ]; then echo "Usage: $0 <command> <delay>" exit 1 fi CMD=$1 if [ $# -eq 2 ]; then DELAY=$2 else DELAY=2 # default fi while : ; do ( (echo -e "Every ${DELAY}s: $CMD\n"; $CMD) | less )& PID=$! sleep $DELAY kill -9 $PID &> /dev/null clear done 像这样使用: alias mywatch="~/bin/mywatch.sh" mywatch vmstat mywatch "ps aux" # commands in options need to be quoted mywaych pstree 10 # change delays 由于相当迂腐,刷新之间的过渡并不像我希望的那样平滑。自然地,作为一个简单的脚本,它不支持 diff 的高亮(watch -d)。此外,输入参数的解析可以做得更好。 geeklin 2009-08-18T05:36:50+08:002009-08-18T05:36:50+08:00 怎么样:tail -f Mohammad Fatemipour 2017-06-14T23:04:17+08:002017-06-14T23:04:17+08:00 我实现了一个简单的python脚本来满足这个请求,名为“watchall” 获取方式: pip install watchall 用 watchall 替换手表并享受可滚动的屏幕。现在它只支持 -n 和 -d 标志。 fabceolin 2021-04-07T01:46:58+08:002021-04-07T01:46:58+08:00 我正在使用这个: while cat /etc/wgetrc; do sleep 10; done | pv -q -L 150 | tail -n +0 -f
与其修改“watch”命令,不如使用 screen!
例如,假设您需要能够看到 300 行的高度和 100 个字符的宽度并在其周围移动。启动屏幕后,强制调整大小:
现在开始你的 watch 命令。然后,您可以使用
C-a <ESC>
在显示屏上翻页。不幸的是,在复制模式下显示不会刷新。但是如果你想调整你正在查看的窗口的哪个部分,最简单的方法可能是重新运行高度/宽度命令,因为默认情况下你的终端显示虚拟窗口的右下角。
你可以试试这个:
替换
vmstat
为并根据您的需要进行qstat
调整。sleep
多尾:http ://www.vanheusden.com/multitail/
例子:
按“b”和向上/向下翻页/箭头向后滚动。
好的,我已经参加了一个
watchless
活动。这有点粗糙,而且似乎还没有完全起作用,但是这里有:您必须手动使用
R
less 键来更新显示。它似乎适用于
watchless date
但不适用于watchless qstat
orwatchless pstree
,两者都显示为空白。有任何想法吗?我看不出随着行内容的变化,如何实现这一目标,
watch
即使您可以向下滚动,也将每2秒重置每2秒钟。一些解决方法是:
watch 'qstat | tail -n40'
从底部的第 40 行开始显示 qstat 的输出watch 'qstat | grep jsmith'
grep 输出,以便您感兴趣的行始终在第一个屏幕中。请注意,您需要将管道周围的命令放在单引号中 - 否则您将通过管道输出
watch
,而不是qstat
.要继续 enkrs 的回答,
观看'qstat | 头-300 | 尾巴 -15'
会让你任意页面进入 qstat 的输出。
这是一个相当粗略的脚本,似乎适用于我向它抛出的几个命令
像这样使用:
由于相当迂腐,刷新之间的过渡并不像我希望的那样平滑。自然地,作为一个简单的脚本,它不支持 diff 的高亮(watch -d)。此外,输入参数的解析可以做得更好。
怎么样:tail -f
我实现了一个简单的python脚本来满足这个请求,名为“watchall”
获取方式: pip install watchall
用 watchall 替换手表并享受可滚动的屏幕。现在它只支持 -n 和 -d 标志。
我正在使用这个: