Bash

如何將 watch 命令與命令/程序的管道鏈一起使用

  • April 19, 2022

我通常使用Linux 實用程序每隔幾秒watch重複一次查看命令的輸出,例如在.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)

我在給定的時間間隔內看到輸出沒有變化,因為裡面的命令$()只執行一次,並且生成的輸出字元串總是作為文字列印(“watched”)。

那麼,如何使watch命令與管道命令鏈一起工作$$ other that putting them inside a script $$?

watch 'command | othertool | yet-another-tool'
watch -n 1 "ls -lrt | tail -n20; date"

讓你連續執行。

引用自:https://unix.stackexchange.com/questions/318859