2014-05-06 6 views
29

मैं echo देखा है में क्या मतलब है कई स्थानों में इस तरह इस्तेमाल किया जा रहा:गूंज> और 2 "कुछ पाठ" यह शेल पटकथा लेखन

echo >&2 message text ... 

इसका क्या मतलब है?

मैं 2>&1 समझता हूं, हालांकि, मुझे यकीन नहीं है कि ऊपर दिए गए उपयोग की व्याख्या कैसे करें।

क्या कोई भी समझा सकता है?

+8

कमांड लाइन में पुनर्निर्देशन की वर्तमान स्थिति महत्वपूर्ण नहीं है। '> और 2 गूंज संदेश' और 'गूंज> और 2 संदेश' और' गूंज संदेश> और 2' समकक्ष हैं। – tripleee

+1

यदि आपको वह स्पष्टीकरण मिला है जिसे आप ढूंढ रहे थे तो उसे उत्तर स्वीकार करना न भूलें। – Jite

+0

@tripleee किस बारे में बात कर रहा है, उसके विस्तार के रूप में, ध्यान दें कि 'echo hey>/dev/null 2> & 1' और' echo hey 2> & 1>/dev/null' ** ** एक ही चीज़ नहीं है। रीडायरेक्ट * क्रम में * बाएं से दाएं होते हैं। – Jite

उत्तर

58

के आदेश के stdout लिंक जल्दी से व्याख्या करने के लिए दूसरों को याद किया:

echo "hey" >&2

> मानक आउटपुट अनुप्रेषित (अंतर्निहित 1>)

& आगे क्या आता है एक फ़ाइल वर्णनकर्ता, नहीं एक फ़ाइल

2 stderr फ़ाइल वर्णनकर्ता संख्या

पुनर्निर्देशन stdoutecho आदेश से stderr (केवल > के दाहिने हाथ की ओर के लिए) है। (यदि आप echo "hey" >2 का उपयोग करना चाहते थे तो आप hey को 2 नामक फ़ाइल में आउटपुट करेंगे)

15

>&2 का उपयोग यहां मानक आउटपुट के बजाय मानक त्रुटि को आउटपुट भेज रहा है। आमतौर पर लॉगिंग आउटपुट भेजने के लिए यह बेहतर जगह है जो गणना का वास्तविक परिणाम नहीं है, विशेष रूप से यदि परिणाम किसी अन्य फ़ाइल आउटपुट के बजाय मानक आउट (संभावित रूप से फ़ाइल पर रीडायरेक्ट) पर मुद्रित होता है (यानी लॉगिंग भेजना मानक त्रुटि यह सुनिश्चित करती है कि इसे वास्तविक आउटपुट के साथ शामिल नहीं किया जाएगा जो आउटपुट फ़ाइल पर रीडायरेक्ट किया गया था)।

4

>&2 पुनर्निर्देशन 1>& 2 के लिए एक शॉर्टकट है।

आप समझते हैं 2>& 1 तो आप समझ जायेंगे कि यह वर्तमान stderr

संबंधित मुद्दे