इसका कोई लेना-देना नहीं है grep
- यह इसलिए है क्योंकि पाइप |
मानक आउटपुट स्ट्रीम को रीडायरेक्ट करता है stdout
जबकि Permission denied
संदेश मानक त्रुटि स्ट्रीम में होते हैं stderr
। आप परिणाम आप उपयोग कर धाराओं के संयोजन के द्वारा चाहते हैं प्राप्त कर सकते थे 2>&1
(धारा जिसका फ़ाइल की जानकारी देता है अनुप्रेषित 2
धारा जिसका फ़ाइल की जानकारी देता है के लिए 1
तो) कि stderr
साथ ही के रूप में stdout
ग्रेप आदेश के इनपुट को पहुंचाया जाता है
find / -name libGL.so.1 2>&1 | grep -v 'denied'
लेकिन इसे stderr
पूरी तरह से पुनर्निर्देशित करके इसे पूरी तरह से छोड़ देना सामान्य होगा/dev/null
find / -name libGL.so.1 2>/dev/null
का उपयोग करना | & के बजाय 2> & 1 |
यदि आप बैश मैन पेज पर एक नज़र डालेंगे तो आपको इस ब्लर्ब पर ध्यान देने की आवश्यकता होगी:
यदि |&
उपयोग किया जाता है, तो कमांड की मानक त्रुटि पाइप के माध्यम से कमांड 2 के मानक इनपुट से जुड़ी है; इसके लिए आशुलिपि है 2>&1 |
।
तो आप इस निर्माण का भी उपयोग कर सकते हैं यदि आप STDERR और STDOUT में शामिल होना चाहते हैं:
find / -name libGL.so.1 |& grep -v 'denied'
/foo/bar/denied/libGL.so.1
, तो संयोजनstdout
औरstderr
फिर फ़िल्टर करने से परिणाम छिपा होगा