使用管道进行监视

使用管道进行监视

我想运行这个命令:

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)

多谢!

答案1

用引号括住命令

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

答案2

我可能错了,但是这难道不能更简单地实现同样的事情(查看添加的匹配日志行)吗?

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

答案3

您可以用引号括住该命令:

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

如果有必要,请确保考虑相对路径。

答案4

使用双引号,就像watch执行命令一样:

watch "ls -la | wc -l"

相关内容