Eu costumo usar o watch
utilitá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 watch
com uma série de comandos canalizada como:
$ watch ls -ltr|tail -n 1
Se eu fizer isso, watch
está realmente assistindo ls -ltr
e a saída está sendo passada para a tail -n 1
qual 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 watch
comando funcione com uma cadeia de comandos canalizada [outra que os coloque dentro de um script]?
man watch
e desça até exemplos ...