web-dev-qa-db-ja.com

パイプ付き時計の使い方

このコマンドを実行したいのですが。

watch -n 1 tail -n 200 log/site_dev.log | grep Doctrine

しかし、それは実行されません、なぜならgrepは末尾ではなく時計で実行しようとしているからです...

のようなことをする方法はありますか

watch -n 1 (tail -n 200 log/site_dev.log | grep Doctrine)

どうもありがとう!

175
TomShreds

引用符でコマンドを囲みます

watch -n 1 'tail -n 200 log/site_dev.log | fgrep Doctrine'
265
tonylo

私は間違っているかもしれませんが、これは同じこと(追加されたときに一致するログ行を表示すること)をより簡単には達成しないでしょうか?

tail -f -n 200 log/site_dev.log | grep Doctrine
29
Mitch

コマンドを引用符で囲むことができます。

watch -n 1 'tail -n 200 log/site_dev.log | fgrep Doctrine'

コマンドに引用符が含まれている場合は、適切なエスケープを使用して別の種類の引用符を使用できます。

watch -n 1 $'tail -n 200 log/site_dev.log | fgrep \'Doctrine.*\''

もしあなたが本当に賢いことをしようとしているなら、スクリプトにコマンドを置き、それをwatchで使ってください:

cat <<EOF >/tmp/watch-command
tail -n 200 $(pwd)/log/site_dev.log | fgrep Doctrine
EOF
chmod +x /tmp/watch-command
watch /tmp/watch-command

必要に応じて相対パスを必ず考慮してください。

2
bschlueter