बैश, एक shell जा रहा है, 2 streams आपको लगता है कि आउटपुट डेटा अनुप्रेषित कर सकते हैं है। जो कुछ भी आप वहां भेजते हैं वह शून्य में गायब हो जाएगा।
(गोले भी एक इनपुट स्ट्रीम है, लेकिन जब से तुम उत्पादन को दबाने के लिए पूछा है कि मैं इस यहाँ पर ध्यान नहीं देंगे)
इन धाराओं संख्या का प्रतिनिधित्व कर रहे: stdout के लिए stderr के लिए 1 और 2।
तो अगर आप सिर्फ रीडायरेक्ट करना चाहते हैं stdout आपको बस इतना चाहते हैं कि <
और >
ऑपरेटरों (मूल रूप से जहां यह कहते हैं करने के लिए जहां डाटा को बहती है)
लगता है हम stdout (को अनुप्रेषित को दबाने के लिए चाहते हैं के साथ/देव/नल):
psql db -f sql.sql > /dev/null
आप देख सकते हैं इस stdout डिफ़ॉल्ट, कोई धारा संख्या इस्तेमाल किया गया है अगर आप धारा नंबर का उपयोग करना चाहता था आप
लिखना होता है है
psql db -f sql.sql 1> /dev/null
अब अगर आप stderror को दबाने के लिए चाहते हैं (धारा संख्या 2) आप उपयोग करेंगे
psql db -f sql.sql 2> /dev/null
तुम भी एक से दूसरे धारा अनुप्रेषित सकता stdout के लिए उदाहरण stderror है, जो के लिए, उपयोगी अगर आप कहीं भी सभी आउटपुट, नियमित और त्रुटियों को सहेजना चाहते हैं।के बीच 2>&1
अंत में और कभी कभी सबसे दिलचस्प
psql db -f sql.sql 2>&1 > log.txt
रिक्त स्थान मन तुम वहाँ नहीं हो सकता है कि आप जब आप चाहते हैं यह पूरी तरह से शांत '
&>
का उपयोग कर, के लिए की सभी उत्पादन को दबाने सकता है
psql db -f sql.sql &> /dev/null
है, यह, इस विशिष्ट मामले में बिल्कुल काम नहीं करता है क्योंकि psql नहीं भेजता करता है stderr के लिए जानकारीपूर्ण संदेश। वे stdout पर डेटा के साथ intermingled हैं। –
अचानक मुझे एहसास हुआ कि आपका मुद्दा यह है कि सभी आउटपुट दबाने से, पेपर को रोकने के लिए ओपी द्वारा अंतिम '&>' केस का उपयोग किया जा सकता है। यदि आप अपना जवाब किसी भी तरह से संशोधित करते हैं तो मैं अपना डाउनवोट हटा दूंगा। –