如何将 watch 命令与管道命令/程序链一起使用

如何将 watch 命令与管道命令/程序链一起使用

我通常使用watchLinux 实用程序每秒重复查看命令的输出n,例如watch df -h /some_volume/.

但我似乎无法使用watch一系列管道命令,例如:

$ watch ls -ltr|tail -n 1

如果我这样做,watch就会真正地观察ls -ltr并且输出被传递到tail -n 1不输出任何内容的地方。

如果我尝试这个:

$ watch (ls -ltr|tail -n 1)

我明白了

$ watch: syntax error near unexpected token `ls'

并且以下任何一项因某种原因失败:

$ watch <(ls -ltr|tail -n 1)

$ watch < <(ls -ltr|tail -n 1)

$ watch $(ls -ltr|tail -n 1)

$ watch `ls -ltr|tail -n 1)`

最后如果这样做:

$ watch echo $(ls -ltr|tail -n 1)

我在给定的时间间隔内看到输出没有变化,因为内部命令$()仅运行一次,并且生成的输出字符串始终作为文字打印(“监视”)。

那么,如何使该watch命令与管道命令链一起使用[其他将它们放入脚本中]?

答案1

watch 'command | othertool | yet-another-tool'

答案2

watch -n 1 "ls -lrt | tail -n20; date"

让你连续管道和运行。

答案3

'使用单引号 ( ) 和双引号 ( )的组合"。例如:

watch -n 1 "links -dump 127.0.0.1/server-status | grep -e '\S' -Fe 'www.'"

答案4

假设您运行一个命令然后想要观看它;使用:

ls -lrt | tail -n20; date
watch "!!"

相关内容