web-dev-qa-db-fra.com

Utiliser la montre avec des pipes

J'aimerais lancer cette commande:

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

Mais ça ne marche pas, car "je pense" que le grep essaie de courir sous la montre au lieu de la queue ...

Y at-il un moyen de faire quelque chose comme

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

Merci beaucoup!

175
TomShreds

Entourez la commande avec des guillemets

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

Je peux me tromper, mais est-ce que cela ne ferait pas la même chose (voir les lignes de journal correspondantes au fur et à mesure qu'elles sont ajoutées) plus simplement?

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

Vous pouvez entourer la commande de guillemets:

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

Si la commande contient des guillemets, vous pouvez utiliser un type de guillemets différent avec l'échappement approprié:

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

Si vous essayez de faire quelque chose de vraiment intelligent, mettez la commande ou les commandes dans un script et utilisez cela avec 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

Assurez-vous de prendre en compte les chemins relatifs si nécessaire.

2
bschlueter