I usually use watch
Linux utility to watch the output of a command repeatedly every n
seconds, like in watch df -h /some_volume/
.
But I seem not to be able to use watch
with a piped series of command like:
$ watch ls -ltr|tail -n 1
If I do that, watch
is really watching ls -ltr
and the output is being passed to tail -n 1
which doesn't output anything.
If I try this:
$ watch (ls -ltr|tail -n 1)
I get
$ watch: syntax error near unexpected token `ls'
And any of the following fails some reason or another:
$ watch <(ls -ltr|tail -n 1)
$ watch < <(ls -ltr|tail -n 1)
$ watch $(ls -ltr|tail -n 1)
$ watch ls -ltr|tail -n 1)
And finally if do this:
$ watch echo $(ls -ltr|tail -n 1)
I see no change in the output at the given interval because the command inside $()
is run just once and the resulting output string is always printed ("watched") as a literal.
So, how do I make the watch
command work with a piped chain of commands [other that putting them inside a script]?
man watch
and scroll down to examples... – don_crissti Oct 25 '16 at 17:57