159

Я хотел бы запустить эту команду:

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)

Большое спасибо!

3 ответа3

251

Окружить команду кавычками

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

Я могу ошибаться, но разве это не приведет к тому же самому (просмотр соответствующих строк журнала по мере их добавления) проще?

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

Вы можете заключить команду в кавычки:

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

Обязательно учитывайте относительные пути, если это необходимо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .