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 ...Respostas:
fonte
watch sh -c 'command | etc'
particularmente, as abordagens tentadas na questão.vamos cantar e correr em uma fileira.
fonte
-n 1
para?Se você desejar listar todos os arquivos nos subdiretórios também, poderá usar o comando find com a opção exec.
watch
será atualizado a cada 30 segundos efind
pesquisará todos os arquivos * .log no diretório atual (subdiretórios incluídos) e imprimirá os nomes de arquivos e suas últimas 10 linhas:fonte