लिनक्स कमांड की चेनिंग का अर्थ है, कई कमांड को मिलाना और उन्हें उनके बीच उपयोग किए गए ऑपरेटर के व्यवहार के आधार पर निष्पादित करना। लिनक्स में कमांड की चेनिंग, कुछ ऐसा है जैसे आप शेल में ही छोटे शेल स्क्रिप्ट लिख रहे हों, और उन्हें सीधे टर्मिनल से निष्पादित कर रहे हों। चेनिंग प्रक्रिया को स्वचालित करना संभव बनाता है। इसके अलावा, एक अनअटेंडेड मशीन चेनिंग ऑपरेटर्स की मदद से अधिक व्यवस्थित तरीके से कार्य कर सकती है।
भी पढ़ें: Awk और रेगुलर एक्सप्रेशन का उपयोग करके फ़ाइलों में टेक्स्ट फ़िल्टर कैसे करें
इस लेख का उद्देश्य अक्सर उपयोग किए जाने वाले कमांड-चेनिंग ऑपरेटर्स पर प्रकाश डालना है, संक्षिप्त विवरण और संबंधित उदाहरणों के साथ जो निश्चित रूप से आपकी उत्पादकता बढ़ाएंगे और आपको सिस्टम लोड को कम करते हुए छोटे और सार्थक कोड लिखने देंगे।
1. एम्परसेंड ऑपरेटर (&)
'&' का कार्य कमांड को बैकग्राउंड में चलाना है। बस कमांड टाइप करें उसके बाद एक व्हाइट स्पेस और '&'। आप एक ही बार में बैकग्राउंड में एक से अधिक कमांड निष्पादित कर सकते हैं।
बैकग्राउंड में एक कमांड चलाएं:
admin@wsxdn.com:~$ ping -c5 www.tecmint.com &
दो कमांड को बैकग्राउंड में, एक साथ चलाएं:
admin@wsxdn.com:/home/tecmint# apt-get update & apt-get upgrade &
2. सेमीकोलन ऑपरेटर (;)
सेमीकोलन ऑपरेटर एक ही बार में कई कमांड चलाना संभव बनाता है और कमांड का निष्पादन क्रमिक रूप से होता है।
admin@wsxdn.com:/home/tecmint# apt-get update ; apt-get upgrade ; mkdir test
उपरोक्त कमांड संयोजन पहले update निर्देश निष्पादित करेगा, फिर upgrade निर्देश और अंत में वर्तमान कार्य निर्देशिका के तहत एक 'test' डायरेक्टरी बनाएगा।
3. AND ऑपरेटर (&&)
AND ऑपरेटर (&&) दूसरी कमांड को केवल तभी निष्पादित करेगा, यदि पहली कमांड का निष्पादन सफल होता है, यानी पहली कमांड का एग्जिट स्टेटस 0 है। यह कमांड अंतिम कमांड के निष्पादन स्थिति की जांच में बहुत उपयोगी है।
उदाहरण के लिए, मैं टर्मिनल में links कमांड का उपयोग करके वेबसाइट tecmint.com पर जाना चाहता हूं, लेकिन उससे पहले मुझे जांचना होगा कि होस्ट लाइव है या नहीं।
admin@wsxdn.com:/home/tecmint# ping -c3 www.tecmint.com && links www.tecmint.com
4. OR ऑपरेटर (||)
OR ऑपरेटर (||) प्रोग्रामिंग में 'else' स्टेटमेंट की तरह है। उपरोक्त ऑपरेटर आपको दूसरी कमांड को केवल तभी निष्पादित करने की अनुमति देता है जब पहली कमांड का निष्पादन विफल होता है, यानी पहली कमांड का एग्जिट स्टेटस '1' है।
उदाहरण के लिए, मैं नॉन-रूट अकाउंट से 'apt-get update' निष्पादित करना चाहता हूं और यदि पहली कमांड विफल होती है, तो दूसरी 'links www.tecmint.com' कमांड निष्पादित होगी।
admin@wsxdn.com:~$ apt-get update || links tecmint.com
उपरोक्त कमांड में, चूंकि यूज़र को सिस्टम अपडेट करने की अनुमति नहीं थी, इसका मतलब है कि पहली कमांड का एग्जिट स्टेटस '1' है और इसलिए कमांड का अंतिम भाग 'links tecmint.com' निष्पादित हो जाता है।
क्या होगा यदि पहली कमांड एग्जिट स्टेटस '0' के साथ सफलतापूर्वक निष्पादित होती है? जाहिर है! दूसरी कमांड निष्पादित नहीं होगी।
admin@wsxdn.com:~$ mkdir test || links tecmint.com
यहां, यूज़र अपने होम डायरेक्टरी में 'test' फोल्डर बनाता है, जिसके लिए यूज़र को अनुमति है। कमांड सफलतापूर्वक निष्पादित हुई जिससे एग्जिट स्टेटस '0' मिला और इसलिए कमांड का अंतिम भाग निष्पादित नहीं हुआ।
5. NOT ऑपरेटर (!)
NOT ऑपरेटर (!) प्रोग्रामिंग में 'except' स्टेटमेंट की तरह है। यह कमांड प्रदान की गई कंडीशन को छोड़कर सभी को निष्पादित करेगा। इसे समझने के लिए, अपने होम डायरेक्टरी में 'tecmint' डायरेक्टरी बनाएं और उसमें 'cd' करें।
admin@wsxdn.com:~$ mkdir tecmint admin@wsxdn.com:~$ cd tecmint
अब, फोल्डर 'tecmint' में कई प्रकार की फ़ाइलें बनाएं।
admin@wsxdn.com:~/tecmint$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html
देखें हमने फोल्डर 'tecmint' के भीतर सभी नई फ़ाइलें बनाई हैं।
admin@wsxdn.com:~/tecmint$ ls a.doc a.html a.pdf a.xml b.doc b.html b.pdf b.xml
अब एक स्मार्ट तरीके से 'html' फ़ाइल को छोड़कर सभी फ़ाइलों को एक साथ डिलीट करें।
admin@wsxdn.com:~/tecmint$ rm -r !(*.html)
सिर्फ वेरिफाई करने के लिए, अंतिम निष्पादन। ls कमांड का उपयोग करके सभी उपलब्ध फ़ाइलों को सूचीबद्ध करें।
admin@wsxdn.com:~/tecmint$ ls a.html b.html
6. AND - OR ऑपरेटर (&& - ||)
उपरोक्त ऑपरेटर वास्तव में 'AND' और 'OR' ऑपरेटर का संयोजन है। यह 'if-else' स्टेटमेंट की तरह है।
उदाहरण के लिए, आइए tecmint.com पर पिंग करें, यदि सफल तो 'Verified' इको करें अन्यथा 'Host Down' इको करें।
admin@wsxdn.com:~/tecmint$ ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"
नमूना आउटपुट
PING www.tecmint.com (212.71.234.61) 56(84) bytes of data. 64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms --- www.tecmint.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms Verified
अब, अपना इंटरनेट कनेक्शन डिस्कनेक्ट करें, और वही कमांड फिर से आज़माएं।
admin@wsxdn.com:~/tecmint$ ping -c3 www.tecmint.com && echo "verified" || echo "Host Down"
नमूना आउटपुट
ping: unknown host www.tecmint.com Host Down
7. PIPE ऑपरेटर (|)
यह PIPE ऑपरेटर बहुत उपयोगी है जहां पहली कमांड का आउटपुट दूसरी कमांड के लिए इनपुट के रूप में कार्य करता है। उदाहरण के लिए, 'ls -l' के आउटपुट को 'less' में पाइपलाइन करें और कमांड का आउटपुट देखें।
admin@wsxdn.com:~$ ls -l | less
8. कमांड कॉम्बिनेशन ऑपरेटर {}
दो या अधिक कमांड को संयोजित करें, दूसरी कमांड पहली कमांड के निष्पादन पर निर्भर करती है।
उदाहरण के लिए, जांचें कि डायरेक्टरी 'bin' उपलब्ध है या नहीं, और संबंधित आउटपुट दें।
admin@wsxdn.com:~$ [ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.
9. प्रीसिडेंस ऑपरेटर ()
ऑपरेटर प्रीसिडेंस क्रम में कमांड निष्पादित करना संभव बनाता है।
Command_x1 &&Command_x2 || Command_x3 && Command_x4.
उपरोक्त छद्म कमांड में, क्या होगा यदि Command_x1 विफल होता है? न तो Command_x2, Command_x3, Command_x4 निष्पादित होंगे, इसके लिए हम प्रीसिडेंस ऑपरेटर का उपयोग करते हैं, जैसे:
(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)
उपरोक्त छद्म कमांड में, यदि Command_x1 विफल होता है, तो Command_x2 भी विफल होता है लेकिन फिर भी Command_x3 और Command_x4 Command_x3 के एग्जिट स्टेटस के आधार पर निष्पादित होते हैं।
10. कंकेटिनेशन ऑपरेटर (\)
कंकेटिनेशन ऑपरेटर (\) जैसा कि नाम से पता चलता है, शेल में बड़ी कमांड को कई लाइनों पर जोड़ने के लिए उपयोग किया जाता है। उदाहरण के लिए, नीचे दी गई कमांड टेक्स्ट फ़ाइल test(1).txt खोलेगी।
admin@wsxdn.com:~/Downloads$ nano test\(1\).txt
अभी के लिए बस इतना ही। मैं बहुत जल्द एक और दिलचस्प लेख लेकर आ रहा हूं। तब तक ट्यून रहें, स्वस्थ रहें और Tecmint से जुड़े रहें। हमारे कमेंट सेक्शन में अपना बहुमूल्य फीडबैक देना न भूलें।