हमेशा त्रुटि को / dev / null में पुनर्निर्देशित करें


22

मुझे पता है कि मैं एक कमांड से /dev/nullनिम्न सिंटैक्स का उपयोग करके त्रुटि संदेशों को पुनर्निर्देशित कर सकता हूं :

command arg1 arg2 2>/dev/null

लेकिन क्या डिफ़ॉल्ट रूप से ऐसा करने का कोई तरीका है ताकि त्रुटि संदेश हमेशा जाएं /dev/null, जब तक कि मैं अन्यथा निर्दिष्ट न करूं?


1
संक्षेप में: हाँ - पुनर्निर्देशित / देव / stderr to / dev / null। लेकिन, यदि आप इसे अपने दम पर समझ नहीं सकते हैं, तो आपको कोशिश नहीं करनी चाहिए, क्योंकि आप सफल होने की तुलना में किसी चीज़ को तोड़ने की अधिक संभावना रखते हैं।
बेनुबर्ड

@ बीनबर्ड स्टाडर! = / देव / स्टैडर। उस फ़ाइल को पुनर्निर्देशित करने से कुछ नहीं होगा। / Dev / में फ़ाइल सुविधा के लिए है।
क्रिस डाउन

@ क्रिसडाउन आप सही हैं, / देव / stderr सिर्फ एक लिंक है। फिर भी, बहुत सारी प्रक्रियाएं fd / 2 के बजाय उस पर लिखती हैं, जिसे आप रीडायरेक्ट भी कर सकते हैं। यह वहाँ से और अधिक जटिल हो जाता है - यही कारण है कि मैंने उत्तर के बजाय एक टिप्पणी छोड़ दी :)।
बेनुबर्ड

जवाबों:


29

बहुत सारे प्रोग्राम स्टैडर को आउटपुट भेजते हैं जो वास्तव में त्रुटियों का संकेत नहीं है। उदाहरण के लिए, कुछ कार्यक्रमों में इसका उपयोग उन सूचनाओं को प्रदर्शित करने के लिए किया जाता है जो अन्यथा कार्यक्रम के उत्पादन को प्रभावित करती हैं (जो कि आपके प्रोग्राम में पाइप करने के लिए डिज़ाइन किया गया है)। हालाँकि, आप ऐसा कर सकते हैं:

exec 2>/dev/null

मैं स्क्रिप्ट के बाहर ऐसा करने की सलाह नहीं दूंगा।

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