बैश, एक शेल होने के नाते , 2 स्ट्रीम हैं जो आप उस आउटपुट डेटा को रीडायरेक्ट कर सकते हैं: stdout और stderr, क्योंकि इस आउटपुट को कहीं न कहीं रीडायरेक्ट किया जाना है, linux में एक विशिष्ट 'सब कुछ त्यागें' नोड / dev / null के माध्यम से पहुंच योग्य है । आप जो कुछ भी वहां भेजते हैं वह बस शून्य में गायब हो जाएगा।
(गोले भी एक इनपुट स्ट्रीम है, लेकिन मैं इसे यहाँ अनदेखा कर दूंगा क्योंकि आपने आउटपुट दबाने के लिए कहा था)
इन धाराओं को संख्याओं द्वारा दर्शाया गया है: 1 स्टडआउट के लिए और 2 स्टडर के लिए।
इसलिए यदि आप सिर्फ 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
आप एक धारा को दूसरी धारा में भी पुनर्निर्देशित कर सकते हैं, उदाहरण के लिए stderout to stdout, जो उपयोगी है यदि आप सभी आउटपुट को कहीं और, नियमित और त्रुटियों से बचाना चाहते हैं।
psql db -f sql.sql 2>&1 > log.txt
आप के बीच रिक्त स्थान नहीं हो सकता है 2>&1
अंत में और कभी-कभी सबसे दिलचस्प तथ्य यह है कि आप सभी आउटपुट को दबाकर उपयोग कर सकते हैं &>
, जब आप इसे 'पूरी तरह से शांत' चाहते हैं
psql db -f sql.sql &> /dev/null
PAGER="/dev/null" psql db -P pager=always -f sql.sql
इसे हमेशा आउटपुट मारना होगा।