私は通常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)
$()
内部コマンドは一度だけ実行され、結果の出力文字列は常にテキスト(「ウォッチ」)で印刷されるため、指定された間隔内で出力に変化はありません。
それでは、このコマンドをパイプラインコマンドチェーンと連携させるにはどうすればよいですかwatch
(それ以外の場合はスクリプトに入れますか)。
ベストアンサー1
watch 'command | othertool | yet-another-tool'