我通常使用watch
Linux 实用程序每隔n
几秒重复观察一个命令的输出,例如在watch df -h /some_volume/
.
但是我似乎无法使用watch
管道命令系列,例如:
$ watch ls -ltr|tail -n 1
Run Code Online (Sandbox Code Playgroud)
如果我这样做,watch
真的ls -ltr
是在观察并且输出被传递给tail -n 1
不输出任何东西。
如果我试试这个:
$ watch (ls -ltr|tail -n 1)
Run Code Online (Sandbox Code Playgroud)
我得到
$ watch: syntax error near unexpected token `ls'
Run Code Online (Sandbox Code Playgroud)
并且以下任何一种原因都失败了:
$ watch <(ls -ltr|tail -n 1)
$ watch < <(ls -ltr|tail -n 1)
$ watch $(ls -ltr|tail -n 1)
$ watch `ls -ltr|tail -n 1)`
Run Code Online (Sandbox Code Playgroud)
最后,如果这样做:
$ watch echo $(ls -ltr|tail -n 1)
Run Code Online (Sandbox Code Playgroud)
我在给定的时间间隔内看到输出没有变化,因为里面的命令$()
只运行一次,并且结果输出字符串总是作为文字打印(“观察”)。
那么,我如何使watch
命令与管道命令链一起工作 [其他将它们放在脚本中]?
Dop*_*oti 199
watch 'command | othertool | yet-another-tool'
Run Code Online (Sandbox Code Playgroud)
小智 14
watch -n 1 "ls -lrt | tail -n20; date"
Run Code Online (Sandbox Code Playgroud)
让我们连续排管并运行。
小智 8
'
使用单引号 ( ) 和双引号 ( )的组合"
。例如:
watch -n 1 "links -dump 127.0.0.1/server-status | grep -e '\S' -Fe 'www.'"
Run Code Online (Sandbox Code Playgroud)