पाइप के साथ घड़ी का उपयोग करना


179

मैं यह कमांड चलाना चाहता / चाहती हूं:

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

लेकिन यह नहीं चलता है, क्योंकि "मुझे लगता है" कि ग्रीप पूंछ के बजाय घड़ी पर चलाने की कोशिश करता है ...

क्या कुछ करने का एक तरीका है

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

आपका बहुत बहुत धन्यवाद!

जवाबों:


269

उद्धरणों के साथ कमांड को घेरें

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

2
क्या होगा यदि पाइपलाइन में भी उद्धरण शामिल हैं (जैसे awk '{print $3}')? संपादित करें: इस तरह
ऑरेंजडॉग

2
आप उन चरों से बच सकते हैं जिनमें \ _,watch -n 'awk \'{print $3}\''
lev

29

मैं गलत हो सकता हूं, लेकिन क्या यह एक ही चीज़ को प्राप्त नहीं करेगा (मिलान लाइनों को देखने के रूप में वे जोड़ दिए जाते हैं) और अधिक बस?

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

6
मैं मानता हूं कि यह सीपीयू के संबंध में अधिक कुशल हो सकता है, लेकिन "पाइप के साथ घड़ी का उपयोग करना" विषय के संदर्भ में यह घड़ी का उपयोग नहीं करता है इसलिए इसका जवाब नहीं है। यह एक खराब उदाहरण के प्रश्न का मामला हो सकता है क्योंकि घड़ी और पाइप पूंछ के संदर्भ में अक्सर प्रतीत होते हैं।
ट्यूडर

1
नहीं, मुझे लगता है कि आप साधन और अंत को भ्रमित कर रहे हैं। उपयोगकर्ता स्पष्ट रूप Doctrineसे एक बढ़ती हुई फ़ाइल में पहुंचते हुए देखना चाहता था , और जब उसने अपने टूलबॉक्स में देखा, तो केवल एक चीज उसे मिली watch। वह वास्तव में क्या जानना चाहता था tail -f। यह भी देखें meta.stackexchange.com/questions/66377/what-is-the-xy-problem
dland

10
मुझे लगता है कि ये दोनों स्वीकार्य उत्तर हैं। शीर्ष और स्वीकृत उत्तर सही प्रश्न का सही उत्तर देता है, और यह उत्तर सही ढंग से एक्सवाई समस्या की पहचान करता है जो ओपी ने खुद के लिए बनाई है और वह समाधान प्रदान करता है जो वे वास्तव में पहले स्थान पर चाहते थे। इस प्रश्न के उत्तर में आने वाले किसी व्यक्ति के लिए दोनों उत्तर आसानी से उपयोगी हो सकते हैं।
cdhowie

2
मैं देखने का एक तरीका ढूंढ रहा था shellcheck *.sh | grep line | wc -lऔर स्वीकृत उत्तर मेरे लिए उपयोगी था।
अमेडी वैन गैससे

2

आप उद्धरणों के साथ कमांड को घेर सकते हैं:

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

यदि कमांड में उद्धरण हैं, तो आप अलग-अलग प्रकार के उद्धरणों का उपयोग कर सकते हैं, जिसमें उपयुक्त भाग हैं:

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

यदि आप वास्तव में कुछ करने की कोशिश कर रहे हैं, तो कमांड या कमांड को स्क्रिप्ट में रखें और घड़ी के साथ उसका उपयोग करें:

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

यदि आवश्यक हो तो रिश्तेदार रास्तों के लिए सुनिश्चित करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.