Bash . में stderr को stdout पर पुनर्निर्देशित कैसे करें

How Redirect Stderr Stdout Bash



लिनक्स में कमांड उपयोगकर्ता से कुछ इनपुट लेते हैं, जो एक फ़ाइल या कोई विशेषता हो सकती है, और निष्पादित होने पर, वे मानक आउटपुट नामक कुछ आउटपुट देते हैं। मानक आउटपुट एक सफल आउटपुट या त्रुटि आउटपुट हो सकता है; दोनों आपकी टर्मिनल स्क्रीन पर प्रदर्शित होंगे। लेकिन कुछ मामलों में, आप कोड के परीक्षण या डिबगिंग के लिए मानक आउटपुट को फ़ाइल में संग्रहीत करना चाहते हैं। लिनक्स में, इन आउटपुट को एक फ़ाइल पर पुनर्निर्देशित किया जा सकता है, और इसे कैप्चर करने की प्रक्रिया को पुनर्निर्देशन कहा जाता है।







लिनक्स में हर प्रक्रिया तीन डेटा स्ट्रीम, स्टडिन, स्टडआउट और स्टैडर का उत्पादन करती है:



  • स्टडिन : कीबोर्ड के माध्यम से उपयोगकर्ता से इनपुट लेता है
  • स्टडआउट : स्क्रीन पर आउटपुट प्रदर्शित करता है
  • स्टेडर : स्क्रीन पर त्रुटि जानकारी दिखाता है

प्रत्येक डेटा स्ट्रीम में एक संख्यात्मक आईडी होती है:



संख्यात्मक आईडी नाम
0 स्टडिन
1 स्टडआउट
2 स्टेडर

आइए पुनर्निर्देशन को विस्तार से थोड़ा और समझाएं:





बैश में मानक आउटपुट और मानक त्रुटि को पुनर्निर्देशित कैसे करें:

कमांड के मानक आउटपुट को पुनर्निर्देशित करने के लिए, हम 1 का उपयोग एक पुनर्निर्देशन ऑपरेटर के साथ करेंगे जो कि > चिह्न से बड़ा है:

$रास 1>stdout.txt

उपरोक्त आदेश एक फ़ाइल बनाएगा और ls कमांड के मानक आउटपुट को stdout.txt फ़ाइल में रखेगा।



Stdout.txt फ़ाइल को पढ़ने के लिए, उपयोग करें:

$बिल्लीstdout.txt

हम कमांड का उपयोग करके मानक त्रुटि को फ़ाइल में रीडायरेक्ट कर सकते हैं:

$बिल्लीmyfile.txt2>stderr.txt

Stderr.txt फ़ाइल देखने के लिए, उपयोग करें:

$बिल्लीstderr.txt

सुनिश्चित करें कि उपयोग 2 > चिह्न से बड़ा होगा। चूंकि निर्देशिका में कोई myfile.txt फ़ाइल नहीं है, इसलिए कैट कमांड एक त्रुटि देगा जिसे stderr.txt फ़ाइल में जोड़ा जाएगा।

इन मानक आउटपुट को एक कमांड के साथ भी रीडायरेक्ट किया जा सकता है, इसका उपयोग करें:

$रास 1>stdout.txt2>stderr.txt

Ls कमांड का आउटपुट में लिखा जाएगा stdout.txt फ़ाइल, लेकिन stderr.txt खाली रहेगा क्योंकि कोई त्रुटि नहीं होगी।

अब stderr.txt के लिए करते हैं:

$बिल्लीmyfile.txt1>stdout.txt2>stderr.txt

Stderr.txt पढ़ने के लिए नीचे दिए गए कमांड का उपयोग करें।

$बिल्लीstderr.txt

और निश्चित रूप से, stdout.txt खाली होगा।

निष्कर्ष :

निष्पादित करने पर लिनक्स कमांड मानक आउटपुट देता है जो एक सफल आउटपुट या एक त्रुटि आउटपुट हो सकता है। आम तौर पर, इन आउटपुट को पुनर्निर्देशन ऑपरेटरों का उपयोग करके पुनर्निर्देशित नहीं किया जा सकता है; हमें > चिह्न के साथ विशिष्ट संख्यात्मक आईडी का उपयोग करने की आवश्यकता है। इस गाइड में, हमने सीखा कि इन संख्यात्मक कुंजियों का उपयोग मानक आउटपुट को उदाहरणों के साथ फ़ाइल में पुनर्निर्देशित करने के लिए कैसे किया जाता है।