Como citar corretamente o comando canalizado para “watch”?

4

Eu quero ficar de olho em um arquivo quando ele é criado. Então eu usei esse comando

ls -hal ./file |awk '{print }'

que fornece o tamanho do arquivo que estou procurando. Eu uso awk porque não preciso de outras coisas, apenas do tamanho do arquivo.

Mas não consigo usar isso com o comando watch , porque se eu tentar

watch ls -hal ./file |awk '{print }'

, em seguida, assistir só aceita ls -hal ./file e, em seguida, canaliza para awk , não dando saída.

Se eu tentar

watch "ls -hal ./file |awk '{print }'"

então fica estranho mostrar o comando errado e toda a saída.

Every 2.0s: ls -hal ./file |awk '{print }'              Sun Jul 20 15:52:18 2014

-rw-rw---- 1 aditya aditya 1.7K Jul 20 15:52 ./file

Você pode ver que não há no comando awk.

Outras citações criam vários erros semelhantes.

Então, qual é o caminho certo para citar este comando?

    
por Registered User 20.07.2014 / 12:26

2 respostas

6

Uma opção seria escapar da $ na sua expressão awk

watch "ls -hal ./file |awk '{print $5}'"

Como alternativa, você pode evitar o problema usando stat em vez de analisar a saída de ls

watch stat -c '%s' ./file
    
por steeldriver 20.07.2014 / 12:51
2

Use o seguinte comando:

watch 'ls -hal ./file|cut -d " " -f 5'

E se você quiser destacar a diferença ,

watch -d 'ls -hal ./file|cut -d " " -f 5'

Isso dará o trabalho que você quiser!

    
por Pandya 20.07.2014 / 12:51