grep -v "grep"
लाइन द्वारा इनपुट लाइन लेता है, और केवल उन लाइनों को आउटपुट grep
करता है जिसमें दिखाई नहीं देता है। बिना -v
, यह उत्पादन केवल लाइनों, जिसमें होता grep
है दिखाई देते हैं। man grep
विवरण के लिए देखें।
जहाँ तक grep
उपयोगिता का संबंध है, यह महत्वहीन है कि grep
एक तर्क के रूप में इसे पारित करने वाला पैटर्न इसके नाम के समान है। लेकिन ज्यादातर मामलों में जहां grep -v grep
वास्तव में प्रकट होता है, यह कोई संयोग नहीं है।
grep -v grep
(या grep -v 'grep'
या grep -v "grep"
) अक्सर एक पाइप के दाईं ओर दिखाई देता है जिसका बाईं ओर एक ps
कमांड है। यह संभावना है कि आपने इसे कहां देखा है। उदाहरण के लिए, मैं उन प्रोग्रामों को खोज सकता हूँ जिनके नाम, रास्ते या कमांड-लाइन तर्क बताते हैं कि वे Xfce से संबंधित हैं:
ek@Io:~$ ps x | grep xfce
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
31901 pts/1 S+ 0:00 grep --color=auto xfce
मेरा grep
आदेश आउटपुट में दिखाया गया था, लेकिन यह वह नहीं है जिसकी मुझे तलाश है। मैं उन प्रक्रियाओं की जानकारी खोज रहा हूं जो पहले से चल रही थीं जब मैंने जांच की कि क्या चल रहा था, न कि वह प्रक्रिया जो केवल इसलिए चल रही है मेरे प्रयास के क्या चल रहा है।
इस विकर्षण को दूर करने का एक सामान्य तरीका है कि इसमें एक और पाइप जोड़ा जाए grep -v grep
:
ek@Io:~$ ps x | grep xfce | grep -v grep
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
grep
-F
इसके बिना एक निश्चित स्ट्रिंग के बजाय एक नियमित अभिव्यक्ति के रूप में अपने पैटर्न का व्यवहार करता है । तो एक और दृष्टिकोण एक नियमित अभिव्यक्ति लिखने के लिए है जो बिल्कुल मेल खाता है लेकिन अलग तरह से लिखा गया है। उदाहरण के लिए:xfce
ek@Io:~$ ps x | grep '[x]fce'
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
यह काम करता है क्योंकि [x]
एक वर्ण वर्ग है जो अक्षर से बिल्कुल मेल खाता है x
।
उन लोकप्रिय तरीकों में से एक कमी यह है कि वे उन पंक्तियों को फ़िल्टर कर देंगे, जिनमें सम्मिलित grep
नहीं हैं , जबकि वे ऐसी grep
आज्ञा नहीं हैं जो आप स्वयं चलाते हैं। वे भी grep
कमांड नहीं हो सकते हैं - सिर्फ कमांड जिनके नाम, पथ या कमांड-लाइन तर्क हैं grep
। इसलिए, जैसा कि सर्जी कोलोडियाज़नी ने बताया है , अक्सर उन तरीकों में से न तो (और न ही आउटपुट को शामिल करने वाला कोई अन्य तरीका ps
) वास्तव में आदर्श है और जैसा कि निक हार्टले ने उल्लेख किया है , अन्य तरीके अक्सर उपयोग करते हैं pgrep
। उदाहरण के लिए:
ek@Io:~$ pgrep -af xfce
2955 xfce4-power-manager
2958 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
-a
पूरी कमांड लाइन दिखाता है। केवल प्रक्रिया आईडी नंबर दिखाने के लिए इसे छोड़ दें।
-f
पूर्ण कमांड लाइन में खोज करता है। इसे केवल नाम खोजने के लिए छोड़ दें।
man grep
कमांड के लिए संदर्भ मैनुअल पेज को पढ़ सकते हैं, या कुछ आदेशों पर अधिक जानकारी के लिए (इंक। Grep) आप कर सकते हैंinfo grep
.... यानी। आपके सिस्टम में प्रलेखन है जो अक्सर बहुत काम आता है।