बैश में सभी पात्र समान नहीं हैं। उनमें से कुछ विशेष कार्य करते हैं, कमांड को ट्वीक करते हैं, और डेटा में हेरफेर करने में हमारी सहायता करते हैं। इसलिए हमने निम्नलिखित सूची को सबसे महत्वपूर्ण बैश विशेष पात्रों के साथ संकलित किया है। यह जानने के लिए पढ़ें कि उनका उपयोग कैसे करें और वे आपके दैनिक बैश जीवन को कैसे आसान बना सकते हैं।
फ़ोल्डर पथ विभाजक (/)
बैश में, फ़ॉरवर्ड-स्लैश (/
) पथ के हिस्सों को अलग करता है, सबफ़ोल्डर-भीतर-फ़ोल्डर। अपने होम फोल्डर के अंदर "पिक्चर्स" नाम के फोल्डर पर जाने के लिए, आपको cd
कमांड का उपयोग करना होगा। के रूप में:
cd /home/USERNAME/pictures
उपरोक्त उदाहरण में फ़ॉरवर्ड स्लैश के बाद सब कुछ स्लैश से पहले के भीतर रहता है।
होम निर्देशिका (~)
अपने बैश टर्मिनल में अपने होम फोल्डर का पूरा नाम टाइप करने के बजाय, आप टिल्ड कैरेक्टर (~
) का उपयोग कर सकते हैं ) उदाहरण के लिए, अपने होम फोल्डर में जाने के लिए, उपयोग करें:
cd ~
आप इसे अधिक जटिल पथों में भी शामिल कर सकते हैं। उदाहरण के लिए, अपनी होम निर्देशिका में "व्यक्तिगत" फ़ोल्डर के अंदर "mydata.txt" नाम की फ़ाइल को संपादित करने के लिए, इसका उपयोग करें:
nano ~/Personal/mydata.txt
वर्तमान / ऊपर फ़ोल्डर (.)
आप एकल (.
. का उपयोग कर सकते हैं ) या डबल डॉट (..
) यह परिभाषित करने के लिए कि क्या कोई क्रिया क्रमशः वर्तमान निर्देशिका या ऊपर वाली के अंदर की जानी चाहिए। एक एकल बिंदु (.) वर्तमान फ़ोल्डर में मैप करता है जबकि एक डबल डॉट (..) इसके ऊपर के फ़ोल्डर में मैप करता है।
मान लें कि आप "/home/USERNAME/Pictures" फ़ोल्डर में हैं और उसी निर्देशिका में "transform_images.sh" नामक स्क्रिप्ट निष्पादित करना चाहते हैं। इस मामले में, टाइप करें:
sh ./transform_images.sh
यदि, स्क्रिप्ट निष्पादित करने के बाद, आप उस फ़ोल्डर के ऊपर वापस लौटना चाहते हैं जिसमें आप वर्तमान में हैं, तो टाइप करें:
cd ..
यह आपको “/home/USERNAME/Pictures” फोल्डर से “/home/USERNAME” में वापस कर देगा।
टिप्पणियां और रद्द (#)
हैश प्रतीक (#
) बैश स्क्रिप्ट लिखते समय अधिक उपयोगी है क्योंकि यह आपको भविष्य के संदर्भ के लिए उन पर टिप्पणी जोड़ने की अनुमति देता है। बैश एक हैश प्रतीक के बाद सब कुछ पर ध्यान नहीं देता।
निम्नलिखित स्क्रिप्ट में, पहली पंक्ति परिभाषित करती है कि यह एक बैश स्क्रिप्ट है, दूसरी एक टिप्पणी है जिसे अनदेखा किया गया है, और तीसरी एक विशिष्ट कॉपी कमांड है:
#!/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
आपको दूसरे संस्करण में केवल "मैं हूँ" लौटा हुआ दिखाई देगा क्योंकि हैश ने उसके बाद आने वाली हर चीज़ को रद्द कर दिया होगा।
श्रेणियां ([])
आप वर्ण श्रेणियों को कोष्ठक में संलग्न करके परिभाषित कर सकते हैं ([]
) यह देखने के लिए कि कार्रवाई में, मान लें कि आप उन फ़ोल्डर नामों की तलाश करना चाहते हैं जो या तो डी या एम से शुरू होते हैं। टाइप करें:
ls [DM]*
शायद आप इसके बजाय प्रत्येक वर्ष के नाम पर सबफ़ोल्डर्स से भरे फ़ोल्डर में हैं। पिछले पांच वर्षों के फोल्डर को /home/USERNAME/backup
. में कॉपी करने के लिए , उपयोग करें:
cp -r 201[56789] /home/USERNAME/backup
आप डैश (-) के साथ उन्हें और भी सरल बना सकते हैं:
cp 201[5-9] /home/USERNAME/backup
उनके बीच की संख्याओं को शामिल करने के लिए बैश 5 से 9 तक पुनरावृति करेगा।
पुनर्निर्देशन (<>)
कोण कोष्ठक का उपयोग करना (<>
), आप कमांड के इनपुट या आउटपुट को रीडायरेक्ट कर सकते हैं। उदाहरण के लिए, निम्न आदेश:
ls >> list.txt
ls
. के आउटपुट को रीडायरेक्ट करेगा और इसे “list.txt” फ़ाइल में सहेजें।
ध्यान दें कि एक डबल समकोण ब्रैकेट (>>
) जोड़ता है एक फ़ाइल के लिए एक कमांड का आउटपुट। यदि आप उसी कमांड को फिर से चलाते हैं, तो यह अपने आउटपुट को मौजूदा सामग्री के अंत में जोड़ देगा। प्रतिस्थापित करने . के लिए नए परिणामों के साथ इसकी सामग्री, एकल समकोण कोष्ठक का उपयोग करें (>
):
ls > list.txt
पाइप (|)
आप पाइप (|
. का उपयोग करके अधिक जटिल परिणाम प्राप्त करने के लिए विभिन्न आदेशों को एक बड़े पूरे में जोड़ सकते हैं ) वे कुछ हद तक पुनर्निर्देशन के समान हैं (यहां उनकी समानता और अंतर पर अधिक)।
मान लीजिए कि आपके पास हजारों प्रविष्टियों वाली एक बड़ी फ़ाइल है और आप उसमें अपना नाम ढूंढना चाहते हैं। टेक्स्ट एडिटर में इसे खोजने के बजाय, निम्न कार्य करें:
cat entries.txt | grep 'YourName'
इस मामले में, "entries.txt" का आउटपुट grep
. पर पाइप किया जाएगा आदेश।
कमांड सेपरेटर (;)
बैश आपको अर्धविराम (;
. से अलग करके एक ही बार में कई आदेश जारी करने की अनुमति देता है ) उदाहरण के लिए, दो फ़ोल्डर को एक कमांड के साथ दो अलग-अलग गंतव्यों में कॉपी करने के लिए:
cp folder1 destination1; cp folder2 destination2
अर्धविराम दो आदेशों को अलग करता है और बैश को क्रमिक रूप से निष्पादित करने के लिए कहता है। ध्यान दें कि आप चाहें तो दो से अधिक कमांड का उपयोग कर सकते हैं।
वाइल्डकार्ड (*)
आप शायद पहले ही तारांकन का उपयोग कर चुके हैं (*
) कुछ आदेशों में। यह वर्णों के किसी भी क्रम से मेल खाता है और सभी JPG फ़ाइलों को एक फ़ोल्डर से दूसरे फ़ोल्डर में कॉपी करने जैसी क्रियाओं की अनुमति देता है:
cp /home/USERNAME/folder1/*.jpg /home/USERNAME/folder2/
प्रश्न चिह्न (?
) बैश में भी एक वाइल्डकार्ड है लेकिन केवल एक ही वर्ण से मेल खाता है। उदाहरण के लिए:
cp /home/USERNAME/201?/*.jpg /home/USERNAME/folder2/
उपरोक्त आदेश "201" से शुरू होने वाले फ़ोल्डरों में सभी जेपीजी फाइलों की प्रतिलिपि बनायेगा। चूंकि वाइल्डकार्ड किसी भी अल्फ़ान्यूमेरिक वर्ण में अनुवाद करता है, न केवल संख्याएं, उपरोक्त आदेश किसी भी फ़ोल्डर को कॉपी करेगा जिसका नाम "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"
ध्यान दें कि वेरिएबल को मान निर्दिष्ट करते समय डॉलर का कोई चिह्न नहीं होता है।
एस्केप (\) और उद्धरण (")
यदि आप किसी विशेष वर्ण का उपयोग करना चाहते हैं जैसा कि यह एक कमांड में है, तो आपको इससे बचना होगा। आप बैकस्लैश के साथ विशेष वर्ण से पहले ऐसा कर सकते हैं (\
) उदाहरण के लिए, यदि आपके पास विस्मयादिबोधक चिह्न वाले नाम वाली फ़ाइल है, तो आपको \!
टाइप करना होगा इसके बजाय बैश ने इसे विस्मयादिबोधक चिह्न के रूप में व्याख्यायित किया, न कि विशेष वर्ण के रूप में।
दूसरा तरीका या तो सिंगल (''
. का उपयोग करना होगा ) या दोहरे उद्धरण (""
) उद्धरणों में एक स्ट्रिंग संलग्न करने से, इसमें किसी विशेष वर्ण को वास्तविक वर्ण माना जाएगा। सिंगल और डबल कोट्स में भी अंतर होता है। सिंगल कोट्स संलग्न स्ट्रिंग को टेक्स्ट के रूप में मूल्यांकन करेंगे जबकि डबल कोट्स आपको संलग्न स्ट्रिंग के भीतर चर ($) का उपयोग करने की अनुमति देते हैं।
रैपिंग अप
उपरोक्त बैश में केवल विशेष पात्र नहीं हैं, लेकिन वे वही हैं जिन्हें हम टर्मिनल में अपने दैनिक रोमांच के लिए सबसे उपयोगी मानते हैं। बैश में तेज़ी से घूमने के लिए इन कीबोर्ड शॉर्टकट को देखना न भूलें। अगर हम किसी महत्वपूर्ण विशेष चरित्र से चूक गए हैं तो हमें नीचे टिप्पणी अनुभाग में बताएं।