私は通常、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
して例までスクロールします