जवाबों:
> ऑपरेटर आमतौर पर आउटपुट को एक फ़ाइल में रीडायरेक्ट करता है लेकिन यह एक डिवाइस के लिए हो सकता है। अपेंड करने के लिए आप >> का भी उपयोग कर सकते हैं।
यदि आप कोई संख्या निर्दिष्ट नहीं करते हैं तो मानक आउटपुट स्ट्रीम मान लिया जाता है लेकिन आप त्रुटियों को भी रीडायरेक्ट कर सकते हैं
> 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