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
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?
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
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!