Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

Linux Bash में इनपुट/आउटपुट रीडायरेक्शन मास्टर करें: व्यावहारिक गाइड

Linux/Bash शेल में तीन डेटा स्ट्रीम हैं जिनका उपयोग आप कमांड निष्पादित करते समय कर सकते हैं – stdin, stdout, और stderr। यहां बताया गया है कि उनका उपयोग कैसे करें।

stdin, stdout, stderr कंसोल में टेक्स्ट के प्रदर्शन की अनुमति देते हैं, और प्रत्येक स्ट्रीम से आउटपुट होने वाले डेटा को अन्य प्रोग्राम में निर्देशित किया जा सकता है।

इन्हें स्टैंडर्ड स्ट्रीम कहा जाता है।

stdin (स्टैंडर्ड इनपुट) क्या है?

टेक्स्ट इनपुट स्ट्रीम।

एप्लिकेशन stdin के माध्यम से टेक्स्ट को इनपुट के रूप में स्वीकार कर सकते हैं।

stdout (स्टैंडर्ड आउटपुट) क्या है?

एक प्रोग्राम का टेक्स्ट आउटपुट स्ट्रीम।

एप्लिकेशन stdout के माध्यम से अन्य प्रोग्राम (या देखने के लिए कंसोल) को डेटा भेजते हैं।

stderr (स्टैंडर्ड एरर) क्या है?

एक प्रोग्राम का टेक्स्ट एरर आउटपुट स्ट्रीम।

यदि कोई प्रोग्राम त्रुटि का सामना करता है, तो उसे त्रुटि के संबंध में डेटा को stdout स्ट्रीम के माध्यम से भेजना चाहिए।

…हाँ, लेकिन इसका वास्तव में क्या मतलब है?

एक कंप्यूटर प्रोग्राम इनपुट और आउटपुट डेटा के साथ चीजें करता है – उदाहरण के लिए, एक प्रोग्राम एक गणितीय समीकरण स्वीकार कर सकता है और उसका समाधान प्रदान कर सकता है।

आपको समीकरण को प्रोग्राम में IN लाने का एक तरीका चाहिए और उत्तर को प्रोग्राम से OUT लाने का एक तरीका चाहिए। आप यह भी जानना चाहते हैं कि समीकरण हल करने योग्य नहीं था, इसलिए आप किसी भी अन्य आउटपुट से अलग उत्पन्न ERROR देखना चाहते हैं।

यही stdin, stdout, और stderr हैं।

क्योंकि सब कुछ एक ही तरह से काम करने से जीवन आसान हो जाता है, इन इनपुट, आउटपुट, और त्रुटि स्ट्रीम को मानकीकृत किया गया है ताकि कमांड लाइन के लिए बनाए गए एप्लिकेशन सभी एक ही तरह से व्यवहार करें।

इसलिए, स्टैंडर्ड स्ट्रीम। प्रत्येक स्ट्रीम का 0-3 से एक संख्यात्मक पहचानकर्ता होता है:

0 stdin
1 stdout
2 stderr

Bash/Shell में stdin, stdout, stderr से रीडायरेक्ट/पाइप करना

आप Linux शेल में टाइप करना टेक्स्ट की एक स्ट्रीम है – आप टाइप करते हैं, और टेक्स्ट स्ट्रीम कंसोल इनपुट में फीड की जाती है।

एक एप्लिकेशन चलता है, और उससे आउटपुट टेक्स्ट डेटा कंसोल में प्रदर्शन के लिए फीड किया जाता है ताकि आप इसे पढ़ सकें।

यह कंसोल पर काम करते समय सभी डिफ़ॉल्ट व्यवहार है, लेकिन इसे बदला जा सकता है। स्ट्रीम को रीडायरेक्ट किया जा सकता है – उदाहरण के लिए, प्रोग्राम का आउटपुट कंसोल पर देखने के बजाय सीधे फ़ाइल में स्ट्रीम किया जा सकता है।

एक प्रोग्राम का आउटपुट सीधे दूसरे प्रोग्राम के इनपुट में रीडायरेक्ट किया जा सकता है।

यहां रीडायरेक्शन और पाइपिंग का उपयोग करने वाले कुछ बुनियादी उदाहरण दिए गए हैं।

रीडायरेक्शन

आमतौर पर, echo कमांड टेक्स्ट को कंसोल पर प्रिंट करेगा:

echo "hello there!"

stdout echo प्रोग्राम का डिफ़ॉल्ट पथ ले रहा है जिसे आपकी स्क्रीन पर प्रदर्शित किया जाता है।

रीडायरेक्शन आपको इसे कहीं और भेजने देता है। यहां, इसे एक फ़ाइल में भेजा जाता है:

echo "hello there!" > test.txt

text.txt नामक एक फ़ाइल बनाई जाएगी जिसमें टेक्स्ट "hello there!" होगा (सावधान रहें, यदि फ़ाइल पहले से मौजूद है, तो यह ओवरराइट हो जाएगी)।

आप >> का उपयोग करके फ़ाइलों में जोड़ सकते हैं बजाय > के

अब, आइए < का उपयोग करके stdin रीडायरेक्ट करें

cat < test.txt

cat कमांड text.txt की सामग्री को अपने stdin स्ट्रीम में पढ़ता है और फिर वही करता है जो cat कमांड करने के लिए डिज़ाइन किया गया है – stdout पर सप्लाई किए गए डेटा को प्रिंट करता है, जो डिफ़ॉल्ट रूप से देखने के लिए कंसोल है। तो, यह बस hello there! को कंसोल पर आउटपुट करेगा।

फ़ाइल में डेटा cat कमांड के लिए stdin पर निर्देशित किया गया था – इसे रीडायरेक्ट किया गया था।

यह एक तरह की धोखाधड़ी है, cat कमांड पैरामीटर के रूप में पास किए गए फ़ाइलनाम से पढ़ने का प्रयास करेगा बिना पाइपिंग के, लेकिन यह इस उदाहरण के उद्देश्यों के लिए सबसे सरल कमांड है।

आप उसी कमांड में stdin और stdout को रीडायरेक्ट कर सकते हैं:

cat < test.txt > output.txt

stdin रीडायरेक्ट किया जा रहा है, test.txt को cat प्रोग्राम में पढ़ रहा है, और cat प्रोग्राम से stdout को output.txt नामक फ़ाइल में निर्देशित किया जा रहा है।

फिर से, यह धोखा है क्योंकि यह वास्तव में केवल फ़ाइल कॉपी करने के लिए cat कमांड का उपयोग कर रहा है, लेकिन यह एक सरल उदाहरण है जो अन्य कमांड की व्याख्या पर निर्भर नहीं करता है।

अंत में, आप उस विशिष्ट स्ट्रीम नंबर को निर्दिष्ट करके stderr स्ट्रीम को रीडायरेक्ट कर सकते हैं जिसे हम पढ़ना चाहते हैं (चूंकि stdout डिफ़ॉल्ट है, इसे निर्दिष्ट करने की आवश्यकता नहीं है):

cat nofile.txt 2> error.txt

stdout की पहचान नंबर 2 से की जाती है – यदि cat त्रुटि उत्पन्न करता है, तो इसे इस स्ट्रीम के माध्यम से भेजा जाएगा और फ़ाइल error.txt में जाएगा।

उपरोक्त उदाहरण error.txt नामक एक फ़ाइल बनाएगा जिसमें टेक्स्ट होगा:

cat: nofile.txt: No such file or directory

…क्योंकि cat कमांड nofile.txt फ़ाइल नहीं ढूंढ सका।

एक साथ रीडायरेक्शन

उपरोक्त उदाहरण में, stderr स्ट्रीम की पहचान उसके संख्यात्मक पहचानकर्ता द्वारा की गई थी – इसका मतलब है कि आप एक ही कमांड में stdout और stderr को रीडायरेक्ट कर सकते हैं यह निर्दिष्ट करके कि आप किसे रीडायरेक्ट करना चाहते हैं:

echo "hello there! 1>test.txt 2>error.txt

ऊपर, stdout test.txt को भेजा जाता है, और stderr error.txt को भेजा जाता है।

पाइपिंग

पाइपिंग रीडायरेक्शन के समान है, लेकिन यह केवल stdin और stdout से संबंधित है, त्रुटियों को अनदेखा किया जाता है।

echo "hello there!" | cat

यहां, पाइप (|) echo कमांड के stdout को cat कमांड के stdin पर पाइप (रीडायरेक्ट) करता है।

निष्कर्ष

कमांड-लाइन एप्लिकेशन के साथ काम करना शुरू में अनजाना लग सकता है, लेकिन वे कार्यों को स्वचालित करते समय शक्तिशाली टूल हैं। stdin, stdout, और stderr – स्टैंडर्ड स्ट्रीम इस लचीलेपन की आधारशिला हैं – आप जटिल वर्कफ़्लो बनाने के लिए कमांड को एक साथ जोड़ सकते हैं जो लगभग किसी भी कार्य को संभाल सकते हैं।


  1. Linux Watch कमांड में मास्टरी: सिंटैक्स, विकल्प और व्यावहारिक उदाहरण Linux Watch कमांड में मास्टरी: सिंटैक्स, विकल्प और व्यावहारिक उदाहरण

    Linux में watch कमांड एक काम करता है – एक कमांड को दोहराता है और परिणाम को बार-बार आउटपुट करता है, जिससे आप परिवर्तनों को देख सकते हैं। यहाँ इसका उपयोग कैसे करें। watch कमांड सिंटैक्स watch कमांड का सिंटैक्स इस प्रकार है: watch OPTIONS COMMAND ध्यान दें कि: OPTIONS नीचे दी गई तालिका से विकल्पों की

  1. पहेली-आधारित शिक्षण के साथ बैश कौशल में महारत हासिल करें पहेली-आधारित शिक्षण के साथ बैश कौशल में महारत हासिल करें

    कंप्यूटर मेरा शौक और मेरा पेशा दोनों हैं। मेरे अपार्टमेंट में लगभग 10 कंप्यूटर बिखरे हुए हैं, सभी लिनक्स चल रहे हैं (मेरे मैक सहित)। चूंकि मुझे अपने कंप्यूटर और कंप्यूटर कौशल को अपग्रेड करने में मजा आता है, जब मुझे सिल्वेन लेरॉक्स की Bash it out मिली, तो मैंने इसे खरीदने का मौका नहीं छोड़ा। मैं डेबि

  1. Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स

    Bash शेल फ़ंक्शन्स कई UNIX / Linux कमांड्स को बाद में निष्पादन के लिए एक ही नाम का उपयोग करके समूहबद्ध करने का एक तरीका है। Bash शेल फ़ंक्शन को नियमित Unix कमांड की तरह निष्पादित किया जा सकता है। शेल फ़ंक्शन्स को किसी नई प्रक्रिया को बनाए बिना वर्तमान शेल संदर्भ में निष्पादित किया जाता है। Bash alia