Как правильно указать команду piped для & ldquo; watch & rdquo ;?

Я хочу следить за файлом при его создании. Поэтому я использовал эту команду

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.

Дальнейшее цитирование создает различные подобные ошибки.

Итак, как правильно процитировать эту команду?

4
задан 20 July 2014 в 14:26

2 ответа

Одна опция была бы к Escape $ в Вашем awk выражение

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

, С другой стороны, Вы могли избежать проблемы в целом при помощи stat вместо того, чтобы анализировать вывод ls

watch stat -c '%s' ./file
6
ответ дан 20 July 2014 в 14:26

Использование после команды:

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

И если Вы хотите к различие в выделении , чем,

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

, Это даст работу, как Вы хотите!

2
ответ дан 20 July 2014 в 14:26

Другие вопросы по тегам:

Похожие вопросы: