बैश ग्लोबिंग ट्यूटोरियल

Bash Globbing Tutorial



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

'?' किसी एकल वर्ण से मेल खाने के लिए उपयोग किया जाता है। आप उपयोग कर सकते हैं '?' एकाधिक वर्णों के मिलान के लिए कई बार।







उदाहरण 1:



मान लीजिए, आप उन टेक्स्ट फ़ाइलनामों को खोजना चाहते हैं जिनके नाम 4 वर्ण लंबे हैं और एक्सटेंशन है ।टेक्स्ट . आप 'ग्लोबिंग पैटर्न' का उपयोग करके लागू कर सकते हैं ? ' इस कार्य को करने के लिए चार बार।



वर्तमान निर्देशिका की सभी फ़ाइलों और फ़ोल्डर की सूची का पता लगाएं।





$रास-NS

निम्न आदेश चलाएँ उन फ़ाइलों को खोजें जिनके नाम चार वर्ण लंबे और अज्ञात हैं।

$ एलएस -एल ????.txt



उदाहरण -2:

मान लीजिए, आप उन दस्तावेज़ फ़ाइलों को खोजना चाहते हैं जिनके नाम 8 वर्ण लंबे हैं, पहले 4 वर्ण हैं एफ, ओ, ओ तथा टी और विस्तार है दस्तावेज़ . फ़ाइलों को खोजने के लिए ग्लोबिंग पैटर्न के साथ निम्न कमांड चलाएँ।

$रास -NSपैर????.doc

उदाहरण -3:

मान लीजिए, आप जानते हैं कि फ़ाइल का नाम है 'श्रेष्ठ' और एक्सटेंशन 3 वर्ण लंबा है, लेकिन एक्सटेंशन नहीं जानता। निम्न कमांड का उपयोग करके चलाएँ '? 'परीक्षण' नाम से सभी फाइलों को खोजने के लिए जिसमें तीन वर्णों का कोई भी विस्तार हो।

$रास -NSश्रेष्ठ।???

तारांकन - (*)

'*' शून्य या अधिक वर्णों से मेल खाने के लिए उपयोग किया जाता है। अगर आपके पास किसी फाइल या जानकारी को सर्च करने के लिए कम जानकारी है तो आप इसका इस्तेमाल कर सकते हैं '*' ग्लोबिंग पैटर्न में।

उदाहरण 1:

मान लीजिए, आप की सभी फाइलों को खोजना चाहते हैं 'प्ल' विस्तार। निम्न कमांड का उपयोग करके चलाएँ '*' उस कार्य को करने के लिए।

$रास -NS *.pl

उदाहरण -2:

मान लीजिए, आप केवल फ़ाइल नाम के शुरुआती अक्षर को जानते हैं जो है 'प्रति' . वर्तमान निर्देशिका की सभी फाइलों को खोजने के लिए '*' का उपयोग करके निम्न कमांड चलाएँ जिनके नाम से शुरू होते हैं 'प्रति' .

$रास -NSप्रति*.*

उदाहरण -3:

आप फाइलों को खोजे बिना विभिन्न उद्देश्यों के लिए बैश स्क्रिप्ट में '*' लागू कर सकते हैं। नाम की एक बैश फ़ाइल बनाएँ 'चेक.श' निम्नलिखित स्क्रिप्ट के साथ। यहां यूजर कब टाइप करेगा ' वाई' या 'वाई' या 'हां' या 'हां' फिर 'की पुष्टि की' प्रिंट होगा और टाइप कब टाइप होगा 'एन' या 'एन' या 'नहीं' या 'नहीं' फिर 'इस बात की पुष्टि नहीं' प्रिंट करेगा।

#!/बिन/बैश
फेंक दिया 'क्या आप पुष्टि करना चाहते हैं?'
पढ़नाउत्तर
मामला $उत्तर में
[Y y]* ) फेंक दिया 'की पुष्टि की।';;
[नग]* ) फेंक दिया 'इस बात की पुष्टि नहीं।';;
*) फेंक दिया 'पुनः प्रयास करें।';;
esac

स्क्रिप्ट चलाएँ।

$दे घुमा केcheck.sh

वर्गाकार ब्रैकेट - ([])

'[]' श्रेणी से वर्ण का मिलान करने के लिए उपयोग किया जाता है। अधिकतर उपयोग की जाने वाली श्रेणी घोषणाओं में से कुछ का उल्लेख नीचे किया गया है।

सभी बड़े अक्षरों को श्रेणी द्वारा परिभाषित किया जाता है, [:upper:] या [A-Z] ।

सभी लोअरकेस अक्षरों को श्रेणी द्वारा परिभाषित किया जाता है, [:lower:] या [a-z]।

सभी संख्यात्मक अंकों को श्रेणी द्वारा परिभाषित किया जाता है, [: अंक:] या [0-9]।

सभी अपरकेस और निचले अक्षर को श्रेणी द्वारा परिभाषित किया जाता है, [:alpha:] या [a-zA-z]।

सभी अपरकेस अक्षर, लोअरकेस वर्णमाला और अंकों को श्रेणी द्वारा परिभाषित किया जाता है, [:alnum:] या [a-zA-Z0-9]

उदाहरण 1:

उन सभी फ़ाइलों और फ़ोल्डरों को खोजने के लिए निम्न आदेश चलाएँ जिनके नाम में शामिल हैं पी या क्या या आर या एस .

$रास -NS [पी एस]*

उदाहरण -2:

उन सभी फ़ाइलों और फ़ोल्डरों को खोजने के लिए निम्न आदेश चलाएँ जिनका नाम 1 से 5 तक किसी भी अंक से शुरू होता है।

$रास -NS [1-5]*

उसकी कमी है - (^)

आप उपयोग कर सकते हैं '^' ग्लोबिंग पैटर्न को अधिक विशेष रूप से परिभाषित करने के लिए स्क्वायर ब्रैकेट के साथ। '^' स्क्वायर ब्रैकेट के अंदर या बाहर इस्तेमाल किया जा सकता है। '^' का उपयोग वर्गाकार कोष्ठक के बाहर फ़ाइल की उन सामग्रियों को खोजने के लिए किया जाता है जो वर्णों की एक निश्चित श्रेणी से शुरू होती हैं। '^' का उपयोग वर्गाकार ब्रैकेट के अंदर किसी दिए गए वर्णों की श्रेणी से शुरू होने वाली पंक्तियों को हाइलाइट करके फ़ाइल की सभी सामग्री को दिखाने के लिए किया जाता है। किसी फ़ाइल से विशेष सामग्री खोजने के लिए आप विभिन्न प्रकार के ग्लोबिंग पैटर्न का उपयोग कर सकते हैं। 'पकड़' बैश में सामग्री खोजने के लिए कमांड का उपयोग किया जाता है। मान लीजिए, आपके पास एक टेक्स्ट फ़ाइल है जिसका नाम है 'list.txt' निम्नलिखित सामग्री के साथ। उस फ़ाइल के लिए निम्न उदाहरणों का परीक्षण करें।

सेब
4000
केला
700
संतरा
850
नाशपाती
९०००
कटहल

उदाहरण 1:

उन पंक्तियों को खोजने के लिए निम्न आदेश चलाएँ list.txt फ़ाइल जो से शुरू होती है पी या क्यू या आर .

$ grep '^[P-R]' list.txt

उदाहरण - २:

उन पंक्तियों को हाइलाइट करने के लिए निम्न आदेश चलाएँ list.txt फ़ाइल जो से शुरू होती है ए या बी या सी .

$ grep '[^A-C]' list.txt

विस्मयादिबोधक चिह्न - (!)

आप उपयोग कर सकते हैं '!' रेंज पैटर्न के अंदर। यह रेंज पैटर्न के बाहर '^' सिंबल के इस्तेमाल की तरह ही काम करता है। उपयोग करने के कुछ उदाहरण '!' संकेत नीचे दिए गए हैं।

उदाहरण 1:

उन पंक्तियों को दिखाने के लिए निम्न आदेश चलाएँ list.txt फ़ाइल जो से शुरू होती है 'पी' या क्यू या आर .

$ grep [!P-R] list.txt

उदाहरण - २:

उन पंक्तियों को दिखाने के लिए निम्न आदेश चलाएँ list.txt फ़ाइल जो किसी भी अंक से शुरू होती है 4 से 8 .

$ grep [!4-8] list.txt

डॉलर चिह्न - ($)

'$' अंतिम चरित्र को परिभाषित करने के लिए प्रयोग किया जाता है। यदि आप जानते हैं कि अंतिम वर्ण के आधार पर जानकारी खोजना चाहते हैं तो आप इसका उपयोग कर सकते हैं '$' ग्लोबिंग पैटर्न में।

उदाहरण 1:

उन पंक्तियों को खोजने के लिए निम्न आदेश चलाएँ list.txt फ़ाइल जो के साथ समाप्त होती है 'प्रति' .

$ grep a$ list.txt

उदाहरण - २:

उन पंक्तियों को खोजने के लिए निम्न आदेश चलाएँ list.txt फ़ाइल जो संख्या के साथ समाप्त होती है पचास .

$ grep 50$ list.txt

धनु धनुकोष्ठक - ({})

'{}' एक से अधिक ग्लोबिंग पैटर्न वाले फ़ाइल नामों से मिलान करने के लिए उपयोग किया जा सकता है। प्रत्येक पैटर्न को बिना किसी स्थान के घुंघराले ब्रैकेट में ',' से अलग किया जाता है। कुछ उदाहरण नीचे दिए गए हैं।

उदाहरण 1:

उन फ़ाइलों को खोजने के लिए निम्न कमांड चलाएँ जिनके नाम 5 वर्ण लंबे हैं और एक्सटेंशन है 'श्री' या फाइलों के अंतिम दो अक्षर हैं 'अनुसूचित जनजाति' और विस्तार है 'टेक्स्ट' .

$ ls -l {?????.sh,*st.txt}

उदाहरण - २:

उन सभी फाइलों को हटाने के लिए निम्न कमांड चलाएँ जिनके एक्सटेंशन हैं 'डॉक्टर' या 'डॉक्क्स' .

$आर एम {*डॉक्टर,*.docx}

पाइप- ( | )

ग्लोबिंग पैटर्न पर एक से अधिक शर्त लगाने के लिए भी '|' चिन्ह का प्रयोग किया जाता है। प्रत्येक पैटर्न को कमांड में '|' प्रतीक द्वारा अलग किया जाता है।

उदाहरण 1:

उन फ़ाइल नामों को खोजने के लिए निम्न कमांड चलाएँ जो 'ए' से शुरू हो रहे हैं और जिनका एक्सटेंशन 'बैश' या 'श' है।

$रासप्रति*+(।दे घुमा के|।श्री)

उदाहरण - २:

नाम की एक बैश फ़ाइल बनाएँ 'मेनू.बैश' और निम्न स्क्रिप्ट जोड़ें। यदि उपयोगकर्ता टाइप 1 या एस तो यह प्रिंट होगा पाठ खोज रहा है . यदि उपयोगकर्ता टाइप 2 या आर तो यह प्रिंट होगा टेक्स्ट बदलना . यदि उपयोगकर्ता टाइप 3 या डी तो यह प्रिंट होगा पाठ हटाना . यह प्रिंट करेगा पुनः प्रयास करें किसी अन्य इनपुट के लिए।

#!/बिन/बैश
फेंक दिया 'मेनू से कोई विकल्प चुनें:'
पढ़नाउत्तर
मामला $उत्तर में
1 |एस) फेंक दिया 'खोज पाठ';;
2 |आर) फेंक दिया 'पाठ की जगह';;
3 |डी) फेंक दिया 'पाठ हटाना';;
*) फेंक दिया 'पुनः प्रयास करें।';;
esac

स्क्रिप्ट चलाएँ।

$दे घुमा केमेनू.बाश

निष्कर्ष

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

अधिक जानकारी के लिए यह वीडियो देखें: