Bash में सभी कैरेक्टर समान नहीं हैं। उनमें से कुछ विशेष कार्य करते हैं, कमांड को ट्वीक करते हैं, और हमें डेटा में हेरफेर करने में मदद करते हैं। इसलिए हमने सबसे महत्वपूर्ण Bash स्पेशल कैरेक्टर्स की निम्नलिखित सूची संकलित की है। यह जानने के लिए पढ़ें कि उनका उपयोग कैसे करें और वे आपके दैनिक Bash जीवन को कैसे आसान बना सकते हैं।
फोल्डर पथ सेपरेटर (/)
Bash में, फॉरवर्ड-स्लैश (/) एक पथ के भागों को अलग करता है, सबफोल्डर्स-इनसाइड-फोल्डर्स। अपने होम फोल्डर के अंदर "pictures" नामक फोल्डर पर जाने के लिए, आपको cd कमांड का उपयोग करना होगा:
cd /home/USERNAME/pictures
उपरोक्त उदाहरण में फॉरवर्ड स्लैश के बाद सब कुछ उससे पहले वाले के भीतर रहता है।
होम डायरेक्टरी (~)
अपने Bash टर्मिनल में अपने होम फोल्डर का पूरा नाम टाइप करने के बजाय, आप टिल्ड कैरेक्टर (~) का उपयोग कर सकते हैं। उदाहरण के लिए, अपने होम फोल्डर पर जाने के लिए, उपयोग करें:
cd ~
आप इसे अधिक जटिल पथों में भी शामिल कर सकते हैं। उदाहरण के लिए, अपने होम डायरेक्टरी में "Personal" फोल्डर के अंदर "mydata.txt" नामक फाइल को संपादित करने के लिए, उपयोग करें:
nano ~/Personal/mydata.txt
वर्तमान / ऊपर का फोल्डर (.)
आप एक सिंगल (.) या डबल डॉट (..) का उपयोग यह परिभाषित करने के लिए कर सकते हैं कि कोई एक्शन वर्तमान डायरेक्टरी के अंदर किया जाना चाहिए या उसके ऊपर वाले में, क्रमशः। एक सिंगल डॉट (.) वर्तमान फोल्डर पर मैप करता है जबकि एक डबल डॉट (..) इसके ऊपर वाले फोल्डर पर मैप करता है।
मान लें कि आप फोल्डर "/home/USERNAME/pictures" में हैं और उसी डायरेक्टरी के भीतर "transform_images.sh" नामक स्क्रिप्ट को निष्पादित करना चाहते हैं। इस मामले में, टाइप करें:
sh ./transform_images.sh
यदि, स्क्रिप्ट निष्पादित करने के बाद, आप वर्तमान में जिस फोल्डर में हैं उससे ऊपर वाले फोल्डर पर लौटना चाहते हैं, तो टाइप करें:
cd ..
यह आपको "/home/USERNAME/pictures" फोल्डर से "/home/USERNAME" पर वापस कर देगा।
कमेंट्स और कैंसल (#)
हैश सिंबल (#) Bash स्क्रिप्ट लिखते समय अधिक उपयोगी होता है क्योंकि यह आपको भविष्य के संदर्भ के लिए उनमें कमेंट्स जोड़ने की अनुमति देता है। Bash हैश सिंबल के बाद आने वाली हर चीज को अनदेखा करता है।
निम्न स्क्रिप्ट में, पहली लाइन परिभाषित करती है कि यह एक Bash स्क्रिप्ट है, दूसरी एक कमेंट है जिसे अनदेखा किया जाता है, और तीसरी एक विशिष्ट कॉपी कमांड है:
#!/bin/bash # This is a comment - you can type anything you want here cp file1.txt /home/USERNAME/scripts/file2.txt
हैश तब भी उपयोगी होते हैं जब आप स्क्रिप्ट नहीं लिख रहे होते क्योंकि वे आपको कमांड के कुछ हिस्सों को कैंसल करने की अनुमति देते हैं। इसे क्रिया में देखने के लिए, निम्न सीधी कमांड आज़माएं:
echo I am YOUR_NAME
फिर, इसके बजाय निम्न प्रयास करें:
echo I am #YOUR_NAME
आप दूसरे संस्करण में केवल "I am" वापस देखेंगे क्योंकि हैश ने उसके बाद आने वाली हर चीज को कैंसल कर दिया होगा।
रेंज ([])
आप ब्रैकेट ([]) में उन्हें संलग्न करके कैरेक्टर रेंज परिभाषित कर सकते हैं। इसे क्रिया में देखने के लिए, मान लें कि आप उन फोल्डर नामों को ढूंढना चाहते हैं जो D या M से शुरू होते हैं। टाइप करें:
ls [DM]*
शायद आप प्रत्येक वर्ष के नाम पर सबफोल्डर से भरे एक फोल्डर में हैं। पिछले पांच वर्षों के फोल्डर को /home/USERNAME/backup में कॉपी करने के लिए, उपयोग करें:
cp -r 201[56789] /home/USERNAME/backup
आप उन्हें डैश (-) के साथ और सरल बना सकते हैं:
cp 201[5-9] /home/USERNAME/backup
Bash उन दोनों के बीच की संख्याओं को शामिल करने के लिए 5 से 9 तक पुनरावृति करेगा।
रीडायरेक्शन (<>)
एंगल ब्रैकेट (<>) का उपयोग करके, आप किसी कमांड के इनपुट या आउटपुट को रीडायरेक्ट कर सकते हैं। उदाहरण के लिए, निम्न कमांड:
ls >> list.txt
ls के आउटपुट को रीडायरेक्ट करेगा और इसे "list.txt" फाइल में सेव करेगा।
ध्यान दें कि एक डबल राइट-एंगल ब्रैकेट (>>) एक कमांड के आउटपुट को फाइल में अपेंड करता है। यदि आप वही कमांड फिर से चलाते हैं, तो यह इसके आउटपुट को मौजूदा सामग्री के अंत में जोड़ देगा। इसकी सामग्री को नए परिणामों से रिप्लेस करने के लिए, एक सिंगल राइट-एंगल ब्रैकेट (>) का उपयोग करें:
ls > list.txt
पाइप्स (|)
आप विभिन्न कमांड को एक बड़े पूरे में जोड़कर अधिक जटिल परिणाम प्राप्त करने के लिए पाइप्स (|) का उपयोग कर सकते हैं। वे रीडायरेक्शन के कुछ हद तक समान हैं (उनकी समानता और अंतर पर अधिक यहां)।
मान लें कि आपके पास हजारों एंट्री वाली एक विशाल फाइल है और आप उसमें अपना नाम ढूंढना चाहते हैं। टेक्स्ट एडिटर में इसे खोजने के बजाय, निम्न करें:
cat entries.txt | grep 'YourName'
इस मामले में, "entries.txt" का आउटपुट grep कमांड में पाइप किया जाएगा।
कमांड सेपरेटर (;)
Bash आपको सेमीकॉलन (;) से अलग करके एक बार में कई कमांड जारी करने की अनुमति देता है। उदाहरण के लिए, एक कमांड के साथ दो फोल्डर को दो अलग-अलग गंतव्यों पर कॉपी करने के लिए:
cp folder1 destination1; cp folder2 destination2
सेमीकॉलन दो कमांड को अलग करता है और Bash को उन्हें क्रमिक रूप से निष्पादित करने के लिए कहता है। ध्यान दें कि यदि आप चाहें तो दो से अधिक कमांड का उपयोग कर सकते हैं।
वाइल्डकार्ड्स (*)
आपने शायद कुछ कमांड में एस्टेरिस्क (*) का उपयोग पहले ही किया है। यह कैरेक्टर्स के किसी भी अनुक्रम से मेल खाता है और एक फोल्डर से दूसरे में सभी JPG फाइलों को कॉपी करने जैसे कार्यों की अनुमति देता है:
cp /home/USERNAME/folder1/*.jpg /home/USERNAME/folder2/
क्वेश्चन मार्क (?) Bash में भी एक वाइल्डकार्ड है लेकिन केवल एक सिंगल कैरेक्टर से मेल खाता है। उदाहरण के लिए:
cp /home/USERNAME/201?/*.jpg /home/USERNAME/folder2/
उपरोक्त कमांड "201." से शुरू होने वाले फोल्डर्स में सभी jpg फाइलों को कॉपी करेगा। चूंकि वाइल्डकार्ड किसी भी अल्फ़ान्यूमेरिक कैरेक्टर में अनुवाद करता है, न कि केवल संख्याओं में, उपरोक्त कमांड "201A" या "201z" नामक किसी भी फोल्डर को भी कॉपी करेगा।
बैकग्राउंड में लॉन्च (&)
आप कमांड को बैकग्राउंड प्रोसेस के रूप में चला सकते हैं बस कमांड के साथ एम्परसैंड सिंबल (&) जोड़कर:
cp /home/USERNAME/Downloads/huge_file.zip /home/USERNAME/backups &
उपरोक्त huge_file.zip फाइल को कॉपी करना शुरू कर देगा और तुरंत बैकग्राउंड में चला जाएगा, जिससे आप टर्मिनल का उपयोग जारी रख सकते हैं। कमांड पूरा होने पर स्वचालित रूप से बाहर निकल जाएगा। यदि आप इसे फिर से फोरग्राउंड में लाना चाहते हैं, तो आप fg टाइप करके और एंटर दबाकर ऐसा कर सकते हैं।
वेरिएबल्स ($)
डॉलर साइन ($) आपको अपने कमांड में उपयोग के लिए वेरिएबल सेट अप करने की अनुमति देता है। उन्हें क्रिया में देखने के लिए, अपने टर्मिनल में निम्न दर्ज करने का प्रयास करें:
myname=YOUR_NAME myage=YOUR_AGE echo "I'm $myname and I'm $myage years old"
ध्यान दें कि वेरिएबल को मान निर्दिष्ट करते समय कोई डॉलर साइन नहीं होता है।
एस्केप (\) और कोट्स ("")
यदि आप किसी विशेष कैरेक्टर को कमांड में वैसे ही उपयोग करना चाहते हैं, तो आपको इसे एस्केप करना होगा। आप विशेष कैरेक्टर से पहले बैकस्लैश (\) लगाकर ऐसा कर सकते हैं। उदाहरण के लिए, यदि आपके पास एक फाइल है जिसके नाम में एक विस्मयादिबोधक चिह्न शामिल है, तो आपको Bash के लिए इसे विस्मयादिबोधक चिह्न के रूप में व्याख्या करने के लिए \! टाइप करना होगा न कि विशेष कैरेक्टर के रूप में।
एक और तरीका सिंगल ('') या डबल-कोट्स ("") का उपयोग करना होगा। एक स्ट्रिंग को कोट्स में संलग्न करके, इसमें कोई भी विशेष कैरेक्टर वास्तविक कैरेक्टर के रूप में माना जाएगा। सिंगल और डबल कोट्स में भी अंतर है। सिंगल कोट्स संलग्न स्ट्रिंग को टेक्स्ट के रूप में मूल्यांकन करेंगे जबकि डबल कोट्स आपको संलग्न स्ट्रिंग के भीतर वेरिएबल ($) का उपयोग करने की अनुमति देते हैं।
समापन
उपरोक्त Bash में एकमात्र विशेष कैरेक्टर नहीं हैं, लेकिन वे वे हैं जिन्हें हम टर्मिनल में अपने दैनिक रोमांच के लिए सबसे उपयोगी मानते हैं। Bash में तेजी से घूमने के लिए इन कीबोर्ड शॉर्टकट को देखना न भूलें। नीचे कमेंट सेक्शन में हमें बताएं कि क्या हमने किसी महत्वपूर्ण विशेष कैरेक्टर को मिस किया है।