इसका कोई लेना-देना नहीं है 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फिर फ़िल्टर करने से परिणाम छिपा होगा