it-swarm.com.de

Verwenden Sie die Uhr mit Rohren

Ich möchte diesen Befehl ausführen:

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

Aber es läuft nicht, weil "ich denke", dass das grep versucht, auf der Uhr statt auf dem Schwanz zu laufen ...

Gibt es eine Möglichkeit, so etwas zu tun?

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

Danke vielmals!

175
TomShreds

Umschließen Sie den Befehl mit Anführungszeichen

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

Ich könnte mich irren, aber würde dies nicht das Gleiche bewirken (das Anzeigen übereinstimmender Protokollzeilen, wenn sie hinzugefügt werden)?

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

Sie können den Befehl in Anführungszeichen setzen:

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

Wenn der Befehl Anführungszeichen enthält, können Sie einen anderen Anführungszeichentyp mit entsprechender Maskierung verwenden:

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

Wenn Sie versuchen, etwas wirklich Kluges zu tun, setzen Sie den Befehl oder die Befehle in ein Skript und verwenden Sie das mit 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

Stellen Sie sicher, dass Sie bei Bedarf die relativen Pfade berücksichtigen.

2
bschlueter