2> / देव / अशक्त का क्या अर्थ है?


जवाबों:


346

> ऑपरेटर आमतौर पर आउटपुट को एक फ़ाइल में रीडायरेक्ट करता है लेकिन यह एक डिवाइस के लिए हो सकता है। अपेंड करने के लिए आप >> का भी उपयोग कर सकते हैं।

यदि आप कोई संख्या निर्दिष्ट नहीं करते हैं तो मानक आउटपुट स्ट्रीम मान लिया जाता है लेकिन आप त्रुटियों को भी रीडायरेक्ट कर सकते हैं

> fileरीडायरेक्ट करने के लिए रिडायरेक्ट्स रीडायरेक्ट्स करने के लिए
1> fileरिडायरेक्ट्स फाइल करने के लिए
2> fileरिडायरेक्ट्स फाइल करने के लिए
&> fileरिडायरेक्ट्स फाइल करने के लिए स्टडआउट और फाइल करने के लिए स्टडआउट

/dev/nullअशक्त उपकरण है जो आपको चाहिए कोई भी इनपुट लेता है और उसे दूर फेंकता है। इसका उपयोग किसी भी आउटपुट को दबाने के लिए किया जा सकता है।


6
के बीच अंतर है > /dev/null 2>&1और&> /dev/null
अलेक्जेंडर मिल्स

13
व्यवहार में आज मुझे नहीं लगता कि 2>&1एक पुराना वाक्यविन्यास है, इसलिए कई &>साल पहले काम नहीं किया जाएगा, लेकिन दोनों समान हैं।
वॉरेन हिल

28

संक्षेप में, यह 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

3
क्या > /dev/null 2>&1इसके बजाय उपयोग करने का एक अच्छा कारण है &> /dev/null?
क्रेग मैकक्यून

7
@CraigMcQueen &>बैश 4 में नया है, पूर्व सिर्फ पारंपरिक तरीका है, मुझे बस इतना आदत है (याद रखने में आसान)।
टेरी वैंग

पर एक टिप्पणी के अनुसार @CraigMcQueen इस जवाब , &> /dev/nullकुछ गोले लेकिन> / dev / बातिल 2> & 1 सब POSIX संगत गोले में काम करेंगे में काम न करें।
स्टैक अंडरफ्लो

3
यह 2> और 1 क्यों है और 2 और 1> क्यों नहीं है?
मारीनाबाद

1
@marienbad जो वास्तव में पोस्ट करने लायक प्रश्न है। वाक्य रचना है fn>target, जहां fnएक फ़ाइल संख्या है (0-2 आमतौर पर, कुछ प्रोग्राम अधिक संख्याओं को परिभाषित करते हैं) और targetआमतौर पर एक फ़ाइल का नाम होता है, लेकिन यहां यह एक और फ़ाइल नाम है - &जिसके साथ उपसर्ग है "मुझे फ़ाइल नाम के बजाय फाइलनंबर चाहिए" के लिए वाक्यविन्यास।
टूलबार 12:१२ बजे

9

/dev/nullलिनक्स / यूनिक्स में ब्लैक होल के रूप में माना जाता है, इसलिए आप इसमें कुछ भी डाल सकते हैं, लेकिन आप इसे वापस नहीं ला पाएंगे /dev/null

इसके अलावा, 2>इसका मतलब है कि आप >स्टैडर (यानी 2) को ब्लैक होल में पुनर्निर्देशित कर रहे हैं (यानी /dev/null)

आपकी आज्ञा है:

grep -i 'abc' content 2>/dev/null 

इस तरह से एक और फॉरवर्ड स्लैश के साथ समाप्त करने की कोशिश मत करो - 2>/dev/null/(यह एक निर्देशिका नहीं है)।


2

grep -i 'abc' सामग्री आउटपुट उत्पन्न करेगी जो आपके कंसोल पर प्रदर्शित होती है, जिसमें कोई भी त्रुटि शामिल है।

निर्दिष्ट करना 2>/dev/nullत्रुटियों को फ़िल्टर करेगा ताकि वे आपके कंसोल पर आउटपुट न करें।

अधिक विस्तार से: 2 त्रुटि विवरणक का प्रतिनिधित्व करता है, जहां त्रुटियों को लिखा गया है। डिफ़ॉल्ट रूप से वे कंसोल पर मुद्रित होते हैं।

\> इस स्थिति में, आउटपुट को निर्दिष्ट स्थान पर पुनर्निर्देशित करता है /dev/null

/dev/null मानक लिनक्स डिवाइस है जहां आप आउटपुट भेजते हैं जिसे आप अनदेखा करना चाहते हैं।


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