Я хочу следить за файлом при его создании. Поэтому я использовал эту команду
ls -hal ./file |awk '{print $5}'
, которая дает размер файла, который я ищу. Я использую awk
, потому что мне не нужны другие вещи, только размер файла.
Но я не могу использовать это с командой watch
, потому что, если я попробую
watch ls -hal ./file |awk '{print $5}'
, то watch только примет ls -hal ./file
, а затем направит его на awk
, не выдавая выходных данных.
Если я попытаюсь
watch "ls -hal ./file |awk '{print $5}'"
, то получится странно, показывая неправильную команду и весь вывод.
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
Вы можете видеть, что в команде awk нет $5
.
Дальнейшее цитирование создает различные подобные ошибки.
Итак, как правильно процитировать эту команду?
Одна опция была бы к Escape $
в Вашем awk
выражение
watch "ls -hal ./file |awk '{print \$5}'"
, С другой стороны, Вы могли избежать проблемы в целом при помощи stat
вместо того, чтобы анализировать вывод ls
watch stat -c '%s' ./file
Использование после команды:
watch 'ls -hal ./file|cut -d " " -f 5'
И если Вы хотите к различие в выделении , чем,
watch -d 'ls -hal ./file|cut -d " " -f 5'
, Это даст работу, как Вы хотите!