Borulu saat kullanımı


179

Bu komutu çalıştırmak istiyorum:

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

Ama koşmuyor, çünkü "sanırım" grep'in kuyruk yerine nöbette koşmaya çalıştığını ...

Gibi bir şey yapmanın bir yolu var mı

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

Çok teşekkürler!

Yanıtlar:


269

Komutu tırnak işaretleri içine alın

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

2
Boru hattı ayrıca tırnak işaretleri içeriyorsa (örneğin awk '{print $3}')? Düzenleme: Bunun gibi
OrangeDog

2
bu karakterlerden \, yaniwatch -n 'awk \'{print $3}\''
lev

29

Yanılıyor olabilirim, ancak bu aynı şeyi yapamaz mıydı (eklendikleri gibi eşleşen günlük satırlarına bakmak)?

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

6
Bunun CPU ile ilgili olarak daha verimli olabileceğini kabul ediyorum, ancak “Borulu saati kullanma” başlığı altında saati kullanmıyor, bu yüzden bir cevap değil. Saatin ve boruların kuyruk bağlamında sıkça görünmediği için bu, zayıf bir örnek soru olabilir.
tudor,

1
Hayır, bence araçları ve sonu karıştırıyorsun. Kullanıcı açıkça Doctrinebüyüyen bir dosyaya ulaşmakta olduğunu görmek istedi ve araç kutusuna baktığında bulduğu tek şey buydu watch. Gerçekten bilmesi gereken şeydi tail -f. Ayrıca bakınız meta.stackexchange.com/questions/66377/what-is-the-xy-problem
dland

10
Sanırım bunların ikisi de kabul edilebilir cevaplar. En çok cevaplanan ve kabul edilen cevap, soruyu tam olarak doğru olarak cevaplar ve bu cevap OP'nin kendileri için yarattığı XY sorununu doğru olarak tanımlar ve ilk başta gerçekten istedikleri çözümü sağlar. Her iki cevap da, bu soruyla karşılaşan birine kolayca yardımcı olabilir.
cdhowie

2
İzlemenin bir yolunu arıyordum shellcheck *.sh | grep line | wc -lve kabul edilen cevap benim için yararlı oldu.
Amedee Van Gasse,

2

Komutu tırnak işaretleri içine alabilirsiniz:

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

Komutta alıntılar varsa, uygun çıkış karakterleriyle farklı türde bir alıntı kullanabilirsiniz:

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

Gerçekten akıllıca bir şeyler yapmaya çalışıyorsanız, komut veya komutları bir komut dosyasına koyun ve bunu izlemek için kullanın:

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

Gerekirse göreceli yolları hesaba kattığınızdan emin olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.