Eu costumo usar o watchutilitário linux para assistir a saída de um comando repetidamente a cada n segundos, como emwatch df -h /some_volume/
Mas parece que não consigo usar watchcom uma série de comandos canalizada como:
$ watch ls -ltr|tail -n 1
Se eu fizer isso, watchestá realmente assistindo ls -ltre a saída está sendo passada para a tail -n 1qual não produz nada.
Se eu tentar isso:
$ watch (ls -ltr|tail -n 1)
eu recebo
$ watch: syntax error near unexpected token `ls'
E qualquer uma das seguintes falhas falha por algum motivo ou outro:
$ watch <(ls -ltr|tail -n 1)
$ watch < <(ls -ltr|tail -n 1)
$ watch $(ls -ltr|tail -n 1)
$ watch `ls -ltr|tail -n 1)`
E finalmente, se fizer isso:
$ watch echo $(ls -ltr|tail -n 1)
Não vejo alteração na saída no intervalo especificado, porque o comando interno $()é executado apenas uma vez e a sequência de saída resultante é sempre impressa ("assistida") como um literal.
Então, como faço para que o watchcomando funcione com uma cadeia de comandos canalizada [outra que os coloque dentro de um script]?
man watche desça até exemplos ...