我想运行这个命令:
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"