213 votes

Utilisation de la montre avec des tuyaux

J'aimerais exécuter cette commande :

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

Mais il ne s'exécute pas, parce que "je pense" que le grep essaie de s'exécuter sur le watch au lieu du tail...

Y a-t-il un moyen de faire quelque chose comme

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

Merci beaucoup !

314voto

tonylo Points 3256

Entourer la commande de guillemets

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

33voto

Billy Coover Points 183

Je me trompe peut-être, mais cela ne permettrait-il pas d'obtenir le même résultat (afficher 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

6voto

bschlueter Points 208

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 autre type de guillemets avec un é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 ou les commandes dans un script et utilisez-le 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

Veillez à tenir compte des chemins relatifs si nécessaire.

0voto

Utilisez des guillemets doubles, comme watch exécute la commande :

watch "ls -la | wc -l"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X