टर्मिनल शुक्रवार: मानक प्रवाह

दुसर्‍या शुक्रवारी आपले स्वागत आहे ...

टर्मिनलचा एक छोटासा भाग जाणून घेण्याची वेळ आली आहे. बरेच विचार केल्यावर मी या बद्दल एक पोस्ट तयार करण्याचे ठरविले मानक प्रवाह; जरी ते वरवरचे असेल, परंतु मला वाटते की ही अशी गोष्ट आहे जी प्रत्येकाला माहित असावी.

मानक प्रवाह

मानक प्रवाह हे वापरकर्ता आणि टर्मिनल दरम्यान अनेक संप्रेषण चॅनेलचे बनलेले आहे. कमांड कार्यान्वित केल्यावर हे इनपुट / आउटपुट "चॅनेल" माहिती प्रदर्शित करतात किंवा कॅप्चर करतात.

मानक प्रवाहांवर द्रुत आकृती.

मानक प्रवाहांवर द्रुत आकृती.

3 आय / ओ कनेक्शनः stdin मानक इनपुट, stdout मानक आउटपुट, stderr दर्जात्मक त्रुटी.

stdin: मानक इनपुट

स्टँडर्ड इनपुट म्हणजे कमांडमधून पाईप्स, रीडायरेक्शन, कीबोर्ड इत्यादीद्वारे माहिती कॅप्चर केली जाते. आम्ही फाइल वर्णनकर्ता 0 सह ते ओळखतो.

वर्णनकर्ता या प्रकरणात इनपुट आणि आउटपुट चॅनेलमध्ये प्रवेश करण्यासाठी सूचक आहे. ही इंट व्हॅल्यूज असतात, सामान्यत: 0, 1 आणि 2.

स्टॅडिनचे उदाहरण असेः

क्रमवारी <सूची

हे सूचीतील सर्व माहिती घेते - या प्रकरणात क्रमांक यादृच्छिकपणे लिहिलेले - आणि जेव्हा फाइलला ls आदेशाकडे पुनर्निर्देशित करते, तेव्हा ते अंकीय यादीला क्रमवारीनुसार क्रमवारी लावते. या उदाहरणात झेंडे अंतर्भूत आहेत.

stdout: मानक आउटपुट

स्टँडर्ड आऊटपुट, जसे त्याच्या नावाप्रमाणेच कन्सोलद्वारे कमांडचे आउटपुट दाखवते. जर आपण स्क्रीनवर आम्हाला दर्शविते की सर्व माहिती लिहिल्यास हे मानक आउटपुट आहे. हे वर्णनकर्ता 1 द्वारे दर्शविले जाते.

आता मी बॅशवर लिहिलेल्या स्क्रिप्टसह स्टिडन आणि स्टँडआउट करण्याचा प्रयत्न करू, कारण मला बाश हाहााहा आवडतो. 🙂

test.sh

#! / बिन / बॅश [-t 0]; नंतर "आपण stdout वापरत आहात" एलिफचा प्रतिबिंबित करा [-t 1]; तर "तुम्ही स्टडीन वापरत आहात" असे एको करू नका, अन्यथा "ब्रूटल एरर" फाय प्रतिबिंबित करा

स्क्रिप्ट कसा वापरायचा हे दाखवणारा स्क्रीनशॉट. पुनर्निर्देशित करताना किंवा स्क्रिप्ट वापरासह पाईप वापरताना चाचणी -टी फक्त stdout स्क्रिप्ट कार्यान्वित झाली आहे की नाही हे जाणून घेणे, आणि नाही तर ते स्पष्टपणे stdin आहे.

बॅश टेस्ट.श एलएस | bash test.sh bash test.sh </ etc / passwd
विचाराधीन स्क्रिप्ट आणि त्याचे आउटपुट ...

विचाराधीन स्क्रिप्ट आणि त्याचे आउटपुट ...

कमांडमध्ये बदल करणे आणि सराव करणे लक्षात ठेवा जेणेकरुन आपण शिका.

stderr: मानक त्रुटी

प्रोग्राम त्रुटी किंवा निदान प्रदर्शन करण्याचा मार्ग म्हणजे मानक त्रुटी. हे वर्णनकर्ता 2 द्वारे दर्शविले जाते.

संकल्पना समजून घेण्यासाठी ही परिस्थिती आहेः जेव्हा आपल्याला कमांड एरर सेव्ह करायची असेल तर प्रथम आपण आउटपुट साध्या मजकूराकडे पुनर्निर्देशित करणे.

ls> info.txt

हे कार्य करेल, कमांडची माहिती साध्या मजकूर फाईलमध्ये संग्रहित केली जाईल. परंतु त्रुटी जतन करताना ते ती संग्रहित करत नाही, परंतु ती स्क्रीनवर दर्शविते आणि साध्या मजकूर फाईल रिक्त आहे.

त्याऐवजी आम्ही फाईलमध्ये stderr सेव्ह करण्यासाठी संकेतशब्द 2> वापरत असल्यास:

ls foo 2> info.txt

आता हे टेक्स्ट फाईलमधील त्रुटीची माहिती सेव्ह करेल.

बहुतेक शेल stoor आणि stdout ला सिंगल कमांड कमांडमध्ये &> सह एकत्रित करण्याची परवानगी द्या जिथे Foo अस्तित्वात नाही

ls डाउनलोड फू &> माहिती.टी.टी.

या फायलीमध्ये Foo मध्ये ls अंमलात आणताना त्रुटीची माहिती असेल आणि डाउनलोडच्या खाली असलेल्या निर्देशिकांची यादी केली जाईल.

आणि शेवटी, काय प्रसिद्ध आहे? 2> & 1?

सोपे, stdout वर stderr पुनर्निर्देशित. त्या & च्या मध्यभागी> आणि 1 म्हणजे ते स्टडआउटकडे पुनर्निर्देशित होईल. ते तिथे नसते तर ते असेच काहीतरी होते ... "फाईल 1 मध्ये त्रुटी पुनर्निर्देशित करा".

आणि यासह पुनर्निर्देशित करणे शक्य आहे:

  • फाईल मध्ये stdout
  • stderr फाईल मध्ये
  • stdout to stderr
  • stderr to stdout
  • stderr आणि फाईल मध्ये stdout
  • इतरांदरम्यान

आजच्या लोकांसाठी तेच आहे. आम्ही थांबलो याबद्दल आम्ही वाचतो आणि धन्यवाद. 😀


6 टिप्पण्या, आपल्या सोडा

आपली टिप्पणी द्या

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित केले आहेत *

*

*

  1. डेटा जबाबदार: मिगुएल Áन्गल गॅटन
  2. डेटाचा उद्देशः नियंत्रण स्पॅम, टिप्पणी व्यवस्थापन.
  3. कायदे: आपली संमती
  4. डेटा संप्रेषण: कायदेशीर बंधन वगळता डेटा तृतीय पक्षास कळविला जाणार नाही.
  5. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.

  1.   इलियोटाइम 3000 म्हणाले

    मनोरंजक. तुमच्या पाठांचे धन्यवाद, मी बाशला अधिक पसंत करतो.

  2.   क्विन्सी मगू म्हणाले

    प्रिय, मजेदार, तथापि आपल्याकडे खालील ओळीत एक त्रुटी आहे:

    "आणि फाईलला ls कमांडवर रिडायरेक्ट करतेवेळी" ती "असावी आणि फाईलला सॉर्ट कमांडवर रिडायरेक्ट करताना" असावे.

    ग्रीटिंग्ज

  3.   Miguel म्हणाले

    मजकूराच्या सुरूवातीस एक त्रुटी आली आहे, जेव्हा आपण "ls" कमांड दर्शविता तेव्हा ते "सॉर्ट" केले जावे:
    "यादीतील सर्व माहिती घ्या - या प्रकरणात क्रमांक यादृच्छिकपणे लिहिलेले - आणि फाइलला ls आदेशाकडे पुनर्निर्देशित करा (येथे ते क्रमवारी असेल)"

    शुभेच्छा आणि आपले कार्य सामायिक केल्याबद्दल धन्यवाद

  4.   रोडर म्हणाले

    हे क्रोनसाठी उत्कृष्ट आहे, जिथे आपणास आउटपुट फ्लश (/ dev / null) केले जावे परंतु फाइल्समध्ये त्रुटी साठवायच्या आहेत. तसेच जेव्हा मी हे करतो तेव्हा मी सहसा डेट कमांड वापरतो जेव्हा ते अयशस्वी झाले तेव्हा नेमके.

    युनिक्स तत्त्वज्ञानाने बाश (श) यांच्याकडे अशी साधने विकसित केली आहेत की "एक काम करा आणि ते चांगले करा"

  5.   लोलो म्हणाले

    बरं, मला काहीही सापडले नाही

    1.    आवाज म्हणाले

      हाहा बरं हे बरं वर्णन केलं आहे, तुला काय कळलं नाही?