我通常使用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
命令與管道命令鏈一起使用[其他將它們放入腳本中]?
答案1
watch 'command | othertool | yet-another-tool'
答案2
watch -n 1 "ls -lrt | tail -n20; date"
讓你連續管道和運行。
答案3
'
使用單引號 ( ) 和雙引號 ( )的組合"
。例如:
watch -n 1 "links -dump 127.0.0.1/server-status | grep -e '\S' -Fe 'www.'"
答案4
假設您運行一個命令然後想要觀看它;使用:
ls -lrt | tail -n20; date
watch "!!"