Я обычно 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и прокрутить вниз к примерам ...