जवाबों:
> ऑपरेटर आमतौर पर आउटपुट को एक फ़ाइल में रीडायरेक्ट करता है लेकिन यह एक डिवाइस के लिए हो सकता है। अपेंड करने के लिए आप >> का भी उपयोग कर सकते हैं।
यदि आप कोई संख्या निर्दिष्ट नहीं करते हैं तो मानक आउटपुट स्ट्रीम मान लिया जाता है लेकिन आप त्रुटियों को भी रीडायरेक्ट कर सकते हैं
> file
रीडायरेक्ट करने के लिए रिडायरेक्ट्स रीडायरेक्ट्स करने के लिए
1> file
रिडायरेक्ट्स फाइल करने के लिए
2> file
रिडायरेक्ट्स फाइल करने के लिए
&> file
रिडायरेक्ट्स फाइल करने के लिए स्टडआउट और फाइल करने के लिए स्टडआउट
/dev/null
अशक्त उपकरण है जो आपको चाहिए कोई भी इनपुट लेता है और उसे दूर फेंकता है। इसका उपयोग किसी भी आउटपुट को दबाने के लिए किया जा सकता है।
2>&1
एक पुराना वाक्यविन्यास है, इसलिए कई &>
साल पहले काम नहीं किया जाएगा, लेकिन दोनों समान हैं।
संक्षेप में, यह stderr
ब्लैक होल (कमांड के आउटपुट को अलग करता है) के लिए (fd 2) रीडायरेक्ट करता है।
पुनर्निर्देशन के लिए कुछ और सामान्य उपयोग के मामले:
command > /dev/null 2>&1 &
command
पृष्ठभूमि में चलाएं , त्यागें stdout
औरstderr
command >> /path/to/log 2>&1 &
चलाएँ command
और stdout और stderr को लॉग फ़ाइल में जोड़ें।
बैश 4+ में, एक छोटा (लेकिन कम पठनीय) रूप कार्यात्मक है
command &>> /path/to/log
> /dev/null 2>&1
इसके बजाय उपयोग करने का एक अच्छा कारण है &> /dev/null
?
&>
बैश 4 में नया है, पूर्व सिर्फ पारंपरिक तरीका है, मुझे बस इतना आदत है (याद रखने में आसान)।
&> /dev/null
कुछ गोले लेकिन> / dev / बातिल 2> & 1 सब POSIX संगत गोले में काम करेंगे में काम न करें।
fn>target
, जहां fn
एक फ़ाइल संख्या है (0-2 आमतौर पर, कुछ प्रोग्राम अधिक संख्याओं को परिभाषित करते हैं) और target
आमतौर पर एक फ़ाइल का नाम होता है, लेकिन यहां यह एक और फ़ाइल नाम है - &
जिसके साथ उपसर्ग है "मुझे फ़ाइल नाम के बजाय फाइलनंबर चाहिए" के लिए वाक्यविन्यास।
/dev/null
लिनक्स / यूनिक्स में ब्लैक होल के रूप में माना जाता है, इसलिए आप इसमें कुछ भी डाल सकते हैं, लेकिन आप इसे वापस नहीं ला पाएंगे /dev/null
।
इसके अलावा, 2>
इसका मतलब है कि आप >
स्टैडर (यानी 2
) को ब्लैक होल में पुनर्निर्देशित कर रहे हैं (यानी /dev/null
)
आपकी आज्ञा है:
grep -i 'abc' content 2>/dev/null
इस तरह से एक और फॉरवर्ड स्लैश के साथ समाप्त करने की कोशिश मत करो - 2>/dev/null/
(यह एक निर्देशिका नहीं है)।
grep -i 'abc' सामग्री आउटपुट उत्पन्न करेगी जो आपके कंसोल पर प्रदर्शित होती है, जिसमें कोई भी त्रुटि शामिल है।
निर्दिष्ट करना 2>/dev/null
त्रुटियों को फ़िल्टर करेगा ताकि वे आपके कंसोल पर आउटपुट न करें।
अधिक विस्तार से: 2 त्रुटि विवरणक का प्रतिनिधित्व करता है, जहां त्रुटियों को लिखा गया है। डिफ़ॉल्ट रूप से वे कंसोल पर मुद्रित होते हैं।
\>
इस स्थिति में, आउटपुट को निर्दिष्ट स्थान पर पुनर्निर्देशित करता है /dev/null
/dev/null
मानक लिनक्स डिवाइस है जहां आप आउटपुट भेजते हैं जिसे आप अनदेखा करना चाहते हैं।
> /dev/null 2>&1
और&> /dev/null