Зазвичай я користувачу watch
утиліту linux спостерігати за результатами команди неодноразово кожні n секунд, як уwatch df -h /some_volume/
Але я, здається, не в змозі використовувати watch
з трубопровідною командою, наприклад:
$ watch ls -ltr|tail -n 1
Якщо я це роблю, watch
це справді дивиться, ls -ltr
і вихід передається, tail -n 1
що нічого не дає.
Якщо я спробую це:
$ watch (ls -ltr|tail -n 1)
я отримав
$ watch: syntax error near unexpected token `ls'
І будь-яке з наведених нижче причин не вдається з тієї чи іншої причини:
$ watch <(ls -ltr|tail -n 1)
$ watch < <(ls -ltr|tail -n 1)
$ watch $(ls -ltr|tail -n 1)
$ watch `ls -ltr|tail -n 1)`
І, нарешті, якщо це зробити:
$ watch echo $(ls -ltr|tail -n 1)
Я не бачу змін у вихідному сигналі на заданому інтервалі, тому що команда всередині $()
виконується лише один раз, і результуюча рядок виводу завжди друкується ("спостерігається") як буквальний.
Отже, як змусити watch
команду працювати з трубопровідним ланцюжком команд [інших, що ставлять їх всередині сценарію]?
man watch
і прокрутіть униз до прикладів ...