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

मास्टर लिनक्स टर्मिनल:पाइपिंग और पुनर्निर्देशन के लिए विशेषज्ञ गाइड

मास्टर लिनक्स टर्मिनल:पाइपिंग और पुनर्निर्देशन के लिए विशेषज्ञ गाइड <पी> लिनक्स में कमांड लाइन इंटरफ़ेस आपके सिस्टम पर कार्यों की एक श्रृंखला को निष्पादित करने का एक शक्तिशाली तरीका प्रदान करता है। अपनी जड़ों के कारण, Linux के टर्मिनल में कई सुविधाएँ अंतर्निहित हैं।

<पी> इनमें से दो शक्तिशाली विशेषताएं पाइपिंग और पुनर्निर्देशन हैं। ये सुविधाएँ आपको कमांड के आउटपुट और इनपुट को अन्य कमांड और फ़ाइलों से रीडायरेक्ट करने में सक्षम बनाती हैं।

<पी> इस लेख में, आप सीखेंगे कि लिनक्स में पाइपिंग और रीडायरेक्शन का क्या मतलब है, इसके बाद आप इन सुविधाओं का उपयोग कैसे करें, इसके बारे में गहराई से जानेंगे।

आवश्यकताएँ

<पी> इस गाइड को पूरी तरह से समझने के लिए, आपको कम से कम यह जानना होगा:

  • लिनक्स ऑपरेटिंग सिस्टम की बुनियादी समझ।
  • लिनक्स कमांड लाइन के साथ काम करने का बुनियादी अनुभव।
  • कमांड को आज़माने के लिए लिनक्स कमांड लाइन तक पहुंच।
<पी> यदि आप नए हैं या आपको पुनश्चर्या की आवश्यकता है तो इस लिनक्स कमांड लाइन ट्यूटोरियल पर एक नज़र डालें।

लिनक्स में पाइपिंग क्या है?

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

<पी> पाइपिंग का एक सरल उदाहरण तब होता है जब आप एक कमांड का आउटपुट लेते हैं और इसे दूसरे कमांड के इनपुट के रूप में उपयोग करते हैं। इसे प्राप्त करने के लिए पाइप (|) मेटाकैरेक्टर का उपयोग किया जाता है।

<पी> यदि आप मेटाकैरेक्टर्स की अवधारणा में नए हैं, तो यह कमांड लाइन में विशेष अर्थ वाले पात्रों के लिए एक फैंसी नाम है। लिनक्स में पाइप (|) के अलावा अन्य मेटाएक्टर भी हैं। सामान्य उदाहरणों में (<से कम), (> से अधिक), और एम्परसेंड (&) शामिल हैं।

पाइपिंग की मूल बातें

<पी> pipe का उपयोग करने का मूल सिंटैक्स आदेश इस प्रकार है:

command1 | command2 | command3 | ... | commandN
<पी> उपरोक्त सिंटैक्स में, टर्मिनल बाएँ से दाएँ कमांड निष्पादित करेगा। इसकी शुरुआत command1 से होगी , और फिर आउटपुट command2 पर इनपुट किया जाएगा . command2 के आउटपुट फिर command3 के इनपुट के रूप में उपयोग किया जाएगा वगैरह. पाइपिंग के बारे में अच्छी बात यह है कि आप जितने चाहें उतने कमांड चेन कर सकते हैं।

पाइपिंग उदाहरण

<पी> नीचे pipe का उपयोग करने के कई उदाहरण दिए गए हैं विभिन्न कार्य करने का आदेश।

1. फ़ाइलों और निर्देशिकाओं की संख्या की गणना

ls -l | wc -l
<पी> उपरोक्त उदाहरण में, पहला खंड ls का उपयोग करके वर्तमान निर्देशिका में सभी फ़ाइलों और निर्देशिकाओं को सूचीबद्ध करता है। आदेश. अतिरिक्त -l विकल्प ls बताता है सामग्री को लंबी सूची प्रारूप में सूचीबद्ध करने का आदेश। <पी> ls -l का आउटपुट फिर कमांड को दूसरे सेक्शन में भेज दिया जाता है। wc -l कमांड ls -l के आउटपुट से लाइनों की संख्या की गणना करता है पहले खंड में कमांड और परिणाम को टर्मिनल पर प्रिंट करता है।

2. फ़ाइलों और निर्देशिकाओं की सूची को क्रमबद्ध करना

ls | sort
<पी> उपरोक्त आदेश में, ls कमांड वर्तमान निर्देशिका में फ़ाइलों और निर्देशिकाओं की सूचियों को आउटपुट करेगा। फिर सूची को sort पर भेज दिया जाता है कमांड, जो उन्हें वर्णानुक्रम में क्रमबद्ध करता है और परिणाम को टर्मिनल पर प्रिंट करता है।

3. किसी फ़ाइल से अद्वितीय शब्दों को क्रमबद्ध करें और प्रदर्शित करें

cat words.txt | sort -r | uniq
<पी> तीसरे उदाहरण में दो पाइपों से जुड़े तीन अलग-अलग कमांड शामिल हैं। पहला कमांड words.txt की सामग्री को आउटपुट करता है फ़ाइल, जिसमें शब्दों की एक सूची है। <पी> आउटपुट को sort -r पर पाइप किया जाता है कमांड, जो शब्दों को उल्टे वर्णमाला क्रम में क्रमबद्ध करता है। अंत में, क्रमबद्ध शब्दों को uniq पर पाइप कर दिया जाता है कमांड, जो डुप्लिकेट को हटाता है और अद्वितीय क्रमबद्ध शब्दों को आउटपुट करता है।

आपको कमांड पाइपिंग लिनक्स क्यों और कब लागू करना चाहिए?

<पी> पाइपिंग में सिंटैक्स जानने से कहीं अधिक समय लगता है। वाक्यविन्यास काफी सरल है. पाइपिंग का प्रभावी ढंग से उपयोग करने के लिए, आपको इसका सार समझना चाहिए। <पी> पाइपिंग का उद्देश्य एक के आउटपुट को दूसरे के इनपुट के रूप में उपयोग करके आपको कमांड चेन करने में मदद करना है।

<पी> पाइपिंग का मतलब उन असंबद्ध आदेशों को श्रृंखलाबद्ध करने का एक तरीका नहीं है जिन्हें आप क्रमिक रूप से निष्पादित करना चाहते हैं। यदि आपको ऐसा करने की आवश्यकता है, तो अपने कमांड को टर्मिनल में लिखें और उन्हें निम्नलिखित सिंटैक्स का उपयोग करके अर्धविराम (;) से अलग करें:

command1 ; command2 ; ... ; commandN

लिनक्स में पुनर्निर्देशन क्या है?

<पी> पुनर्निर्देशन यह निर्धारित करने का कार्य है कि आपके आदेशों के इनपुट या आउटपुट कहाँ जाएँ। डिफ़ॉल्ट रूप से, कमांड मानक इनपुट से डेटा प्राप्त करते हैं और फिर परिणामों को मानक आउटपुट में आउटपुट करते हैं।

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

<पी> पाइपिंग की तरह, लिनक्स पुनर्निर्देशन करने के लिए विशेष वर्ण प्रदान करता है। यहां Linux में महत्वपूर्ण फ़ाइल-पुनर्निर्देशन वर्ण और वे क्या करते हैं:

हैं
  • > - किसी कमांड के आउटपुट को किसी दी गई फ़ाइल पर निर्देशित करता है।
  • < - किसी दी गई फ़ाइल की सामग्री को एक कमांड की ओर निर्देशित करता है।
  • >> - किसी कमांड के आउटपुट को किसी दी गई फ़ाइल पर निर्देशित करता है। यदि फ़ाइल मौजूद है और उसमें सामग्री है तो आउटपुट जोड़ता है।
  • 2> - किसी कमांड से त्रुटि संदेशों को किसी दी गई फ़ाइल पर निर्देशित करता है।
  • 2>> - एक कमांड से किसी त्रुटि संदेश को किसी दी गई फ़ाइल पर निर्देशित करता है। यदि फ़ाइल मौजूद है और उसमें सामग्री है तो त्रुटि संदेश जोड़ता है।
  • &> - मानक आउटपुट और त्रुटि को किसी दी गई फ़ाइल पर निर्देशित करता है।
  • &>> - किसी दिए गए फ़ाइल में मानक आउटपुट और त्रुटि को निर्देशित करता है। यदि फ़ाइल मौजूद है और उसमें सामग्री है तो उसे इसमें जोड़ दिया जाता है।
<पी> आइए प्रत्येक फ़ाइल-पुनर्निर्देशन वर्ण को गहराई से देखें।

1. > के साथ आउटपुट पुनर्निर्देशन

<पी> > प्रतीक आपको कमांड के आउटपुट को एक निश्चित फ़ाइल पर रीडायरेक्ट करने में सक्षम बनाता है। प्रतीक का उपयोग करके, आप आउटपुट को किसी भी मौजूदा फ़ाइल पर रीडायरेक्ट कर सकते हैं। यदि यह मौजूद नहीं है, तो आउटपुट रीडायरेक्शन कैरेक्टर स्वचालित रूप से एक नया बना देगा। <पी> हालाँकि, किसी मौजूदा फ़ाइल पर लिखते समय आपको सावधान रहना चाहिए क्योंकि इसकी सामग्री बिना किसी चेतावनी के अधिलेखित हो जाएगी।

<पी> आप निम्नलिखित सिंटैक्स का उपयोग करके आउटपुट पुनर्निर्देशन कर सकते हैं:

command > file
<पी> command चलाने का आउटपुट file पर लिखा जाएगा मानक आउटपुट के बजाय (या, दूसरे शब्दों में, टर्मिनल पर मुद्रित)। यहां एक उदाहरण दिया गया है कि आप आउटपुट रीडायरेक्शन कैसे कर सकते हैं:

ls -a > contents.txt
<पी> उपरोक्त आदेश में, वर्तमान निर्देशिका में आइटमों की सूची (डॉटफ़ाइल्स, निर्देशिकाओं और फ़ाइलों सहित) contents.txt पर लिखी जाएगी फ़ाइल. पुनर्निर्देशन के कारण आपको टर्मिनल में कोई आउटपुट नहीं दिखाई देगा।

2. >> के साथ आउटपुट पुनर्निर्देशन

<पी> >> आपको कमांड के आउटपुट को फ़ाइल पर रीडायरेक्ट करने देता है। लेकिन, एक से अधिक वर्ण (>) का उपयोग करने के विपरीत ), >> यदि आप किसी मौजूदा फ़ाइल में लिखने का प्रयास करते हैं (इसकी सामग्री को ओवरराइट करने के बजाय) तो आउटपुट जुड़ जाएगा। यदि फ़ाइल मौजूद नहीं है, तो यह एक नई फ़ाइल बनाएगी।

<पी> वाक्यविन्यास इस प्रकार है:

command >> file
<पी> यहां >> के साथ आउटपुट रीडायरेक्शन का उपयोग करने का एक उदाहरण दिया गया है पहले जैसी ही कार्रवाई करने के लिए:

ls -a >> contents.txt

3. < के साथ इनपुट पुनर्निर्देशन

<पी> < कमांड लाइन में वर्ण आपको इनपुट को कीबोर्ड के बजाय किसी फ़ाइल से कमांड पर रीडायरेक्ट करने देता है। < का उपयोग करके इनपुट पुनर्निर्देशन का सिंटैक्स इस प्रकार है:

command < file
<पी> यहां इनपुट पुनर्निर्देशन का उपयोग करने का एक उदाहरण दिया गया है:

wc -w < files.txt
<पी> उपरोक्त उदाहरण में, हम files.txt पास कर रहे हैं wc -w के इनपुट के रूप में कमांड, जो फ़ाइल में शब्दों की संख्या गिनता है। लेकिन आपको कई परिदृश्यों में इनपुट पुनर्निर्देशन वर्ण का उपयोग करने की आवश्यकता नहीं है क्योंकि यह डिफ़ॉल्ट व्यवहार है। उदाहरण के लिए, उपरोक्त आदेश निम्नलिखित के समान है:

wc -w files.txt

4. 2> के साथ त्रुटि पुनर्निर्देशन और 2>>

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

<पी> त्रुटियों को पुनर्निर्देशित करने के लिए एक अच्छी जगह त्रुटियों को संग्रहीत करने के लिए समर्पित फ़ाइल है। यहां उस कमांड का एक सरल उदाहरण दिया गया है जो उस निर्देशिका में फ़ाइलों की सूची तक पहुंचने का प्रयास कर रहा है जो मौजूद नहीं है:

ls nonexistent 2> error.txt
<पी> उपरोक्त उदाहरण में, टर्मिनल एक त्रुटि देगा क्योंकि nonexistent नाम की कोई फ़ाइल नहीं है . लेकिन इसे कंसोल पर प्रिंट करने के बजाय, इसे error.txt में संग्रहीत किया जाएगा त्रुटि पुनर्निर्देशन चरित्र के कारण फ़ाइल। हालाँकि, यदि कोई त्रुटि नहीं है तो फ़ाइल में कुछ भी नहीं होगा।

<पी> यदि आपको किसी मौजूदा फ़ाइल की सामग्री को ओवरराइट करने के बजाय उसमें कोई त्रुटि जोड़ना है, तो 2>> का उपयोग करें 2> के बजाय .

5. &> के साथ आउटपुट और त्रुटि पुनर्निर्देशन और &>>

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

<पी> &> का उपयोग करने का सिंटैक्स इस प्रकार है:

command &> output.txt
<पी> command की त्रुटि या आउटपुट output.txt पर लिखा गया है फ़ाइल. यहाँ एक उदाहरण है:

ls sample &> output.txt
<पी> उपरोक्त आदेश में, यदि sample निर्देशिका उपलब्ध नहीं है या उपलब्ध है लेकिन आपके पास पढ़ने की अनुमति नहीं है, output.txt में एक उचित त्रुटि लिखी जाएगी फ़ाइल. लेकिन अगर यह मौजूद है और आपके पास पढ़ने की अनुमति है, तो इसकी सामग्री output.txt में आउटपुट होगी फ़ाइल.

<पी> &>> का उपयोग करना यदि फ़ाइल मौजूद है और उसमें सामग्री है तो आपको आउटपुट को फ़ाइल में जोड़ने की अनुमति देता है।

कमांड लाइन की शक्ति को उजागर करने के लिए पाइपिंग और रीडायरेक्शन को कैसे संयोजित करें

<पी> पाइपिंग और पुनर्निर्देशन का एक साथ उपयोग करने से आप बिना भारी वजन उठाए जटिल ऑपरेशन कर सकते हैं। दोनों को संयोजित करना सीखकर, आप कम टाइपिंग के साथ विभिन्न क्रियाएं करने के लिए जटिल कमांड बना सकते हैं। <पी> उदाहरण के तौर पर निम्नलिखित कमांड लें:

ls | grep ".txt" > text_files.txt
<पी> ls कमांड वर्तमान निर्देशिका की सामग्री को सूचीबद्ध करता है। आउटपुट को grep पर पाइप किया जाता है टेक्स्ट फ़ाइलों को फ़िल्टर करने का आदेश। अंत में, grep का आउटपुट कमांड को text_files.txt पर पुनर्निर्देशित किया गया है फ़ाइल. <पी> यह सरल लेकिन शक्तिशाली उदाहरण दिखाता है कि जब पाइपिंग और पुनर्निर्देशन की बात आती है, तो एकमात्र सीमा आपका दिमाग है।

निष्कर्ष

<पी> इस ट्यूटोरियल में, आपने लिनक्स में पाइपिंग और रीडायरेक्शन की मूल बातें सीखीं। हमने बुनियादी बातों को उदाहरणों के साथ कवर किया है कि आप दोनों का उपयोग कैसे कर सकते हैं। <पी> अलग-अलग दो विशेषताएं शक्तिशाली हो सकती हैं, लेकिन आप उन्हें अपने कमांड में संयोजित करके आगे बढ़ सकते हैं, जैसा कि पिछले अनुभाग में दिखाया गया है।

<पी> मुफ़्त में कोड करना सीखें. फ्रीकोडकैंप के ओपन सोर्स पाठ्यक्रम ने 40,000 से अधिक लोगों को डेवलपर्स के रूप में नौकरी पाने में मदद की है। आरंभ करें


  1. जावास्क्रिप्ट ऐरे स्लाइस () जावास्क्रिप्ट ऐरे स्लाइस ()

    एक सरणी में चयनित तत्वों को वापस करने के लिए जावास्क्रिप्ट की स्लाइस () विधि का उपयोग किया जाता है। वाक्य रचना इस प्रकार है - array.slice(start, end) ऊपर, प्रारंभ पैरामीटर एक पूर्णांक है जो निर्दिष्ट करता है कि चयन कहां से शुरू करना है, जबकि अंत वह है जहां चयन समाप्त होता है। आइए अब जावास्क्रिप्

  1. टिंकर पूर्ण-स्क्रीन एप्लिकेशन बनाना टिंकर पूर्ण-स्क्रीन एप्लिकेशन बनाना

    टिंकर शुरू में एक विंडो बनाता है जिसमें विजेट और कंट्रोल बार जैसे एप्लिकेशन घटक होते हैं। हम विशेषता(-पूर्णस्क्रीन, सही) का उपयोग करके किसी देशी दिखने वाले एप्लिकेशन को पूर्ण-स्क्रीन एप्लिकेशन में बदल सकते हैं तरीका। विंडो को पूर्ण-स्क्रीन बनाने के लिए, बस उस विशेष विंडो के साथ विधि को लागू करें। उद

  1. एंड्रॉइड LinkedBlockingDeque में पीकलास्ट () का उपयोग कैसे करें? एंड्रॉइड LinkedBlockingDeque में पीकलास्ट () का उपयोग कैसे करें?

    एक उदाहरण में जाने से पहले, हमें पता होना चाहिए कि LinkedBlockingDeque क्या है। यह संग्रह इंटरफ़ेस और AbstractQueue वर्ग द्वारा कार्यान्वित किया जाता है। यह लिंक्ड नोड्स के आधार पर वैकल्पिक सीमाएं प्रदान करता है। यह एक कंस्ट्रक्टर को मेमोरी साइज पास करने वाला है और एंड्रॉइड में मेमोरी अपव्यय प्रदान