शैल स्क्रिप्टिंग क्या है?
लिनक्स उपयोगकर्ता होने का मतलब है कि आप कमांड लाइन के साथ खेलते हैं। इसकी तरह या नहीं, कुछ ऐसी चीजें हैं जो इस इंटरफ़ेस के माध्यम से इंगित करके और क्लिक करके अधिक आसानी से की जाती हैं। जितना अधिक आप कमांड लाइन का उपयोग करते हैं और सीखते हैं, उतना अधिक आप इसकी क्षमता देखते हैं। खैर, कमांड लाइन स्वयं एक कार्यक्रम है: खोल। अधिकांश लिनक्स डिस्ट्रोज़ आज बैश का उपयोग करते हैं, और यही वह है जो आप वास्तव में कमांड में प्रवेश कर रहे हैं।
अब, आप में से कुछ जो लिनक्स का उपयोग करने से पहले विंडोज का इस्तेमाल करते हैं, बैच फाइलों को याद कर सकते हैं। ये छोटी टेक्स्ट फाइलें थीं जिन्हें आप निष्पादित करने के लिए कमांड के साथ भर सकते थे और विंडोज़ उन्हें बदले में चलाएगा। कुछ चीजें करने के लिए यह एक चालाक और साफ तरीका था, जैसे कि आप अपने हाईस्कूल कंप्यूटर प्रयोगशाला में रन गेम्स जैसे सिस्टम फ़ोल्डर्स नहीं खोल सकते या शॉर्टकट नहीं बना सकते थे। विंडोज़ में बैच फ़ाइलें, उपयोगी होने पर, खोल स्क्रिप्ट की सस्ती नकल होती हैं।
यह वास्तव में पटकथा की शक्ति है, मुझे लगता है। अधिकांश प्रमुख प्रोग्रामिंग भाषाओं के स्टेपल सीखते समय, आप पहले से ही कमांड के साथ प्रोग्राम प्राप्त करते हैं। कुछ दोहराव और थकाऊ करने की आवश्यकता है? इसे स्क्रिप्ट करें! वास्तव में एक संकलित कमांड के लिए शॉर्टकट की आवश्यकता है? इसे स्क्रिप्ट करें! कुछ के लिए कमांड लाइन इंटरफ़ेस का उपयोग करना वास्तव में आसान बनाना चाहते हैं? इसे स्क्रिप्ट करें!
शुरू करने से पहले
हमारी स्क्रिप्टिंग श्रृंखला शुरू करने से पहले, आइए कुछ बुनियादी जानकारी को कवर करें। हम बैश खोल का उपयोग करेंगे, जो अधिकांश लिनक्स वितरण मूल रूप से उपयोग करते हैं। बैश मैक ओएस उपयोगकर्ताओं और विंडोज पर सिगविन के लिए भी उपलब्ध है। चूंकि यह इतना सार्वभौमिक है, इसलिए आप अपने मंच के बावजूद स्क्रिप्ट करने में सक्षम होना चाहिए। इसके अतिरिक्त, जब तक संदर्भित सभी आदेश मौजूद हैं, तब तक स्क्रिप्ट कई प्लेटफॉर्म पर काम कर सकती हैं जिनमें कम से कम कोई ट्वीविंग आवश्यक नहीं है।
स्क्रिप्टिंग आसानी से "व्यवस्थापक" या "सुपरसियर" विशेषाधिकारों का उपयोग कर सकती है, इसलिए उन्हें काम करने से पहले स्क्रिप्ट का परीक्षण करना सबसे अच्छा है। सामान्य ज्ञान का भी उपयोग करें, यह सुनिश्चित करने के लिए कि आपके पास उन फ़ाइलों का बैकअप है जिन पर आप एक स्क्रिप्ट चलाने के बारे में हैं। सही विकल्प का उपयोग करना भी वास्तव में महत्वपूर्ण है, जैसे- rm कमांड के लिए, ताकि आपकी बातचीत आवश्यक हो। यह कुछ ग़लत गलतियों को रोक सकता है। इस प्रकार, आपके द्वारा डाउनलोड की जाने वाली स्क्रिप्ट के माध्यम से पढ़ें और आपके पास डेटा के साथ सावधान रहें, बस चीजें गलत होने पर।
उनके मूल पर, स्क्रिप्ट केवल सादा पाठ फ़ाइलें हैं। आप उन्हें लिखने के लिए किसी भी टेक्स्ट एडिटर का उपयोग कर सकते हैं: जीएडिट, एमएक्स, वीम, नैनो … यह सूची जारी है। बस इसे सादा पाठ के रूप में सहेजना सुनिश्चित करें, समृद्ध टेक्स्ट या वर्ड दस्तावेज़ के रूप में नहीं। चूंकि मुझे नैनो प्रदान करने की आसानी से प्यार है, इसलिए मैं इसका उपयोग करूँगा।
स्क्रिप्ट अनुमतियां और नाम
स्क्रिप्ट को प्रोग्राम की तरह निष्पादित किया जाता है, और इसके होने के लिए उन्हें उचित अनुमतियां रखने की आवश्यकता होती है। आप स्क्रिप्ट को निम्न आदेश चलाकर निष्पादन योग्य बना सकते हैं:
chmod +x ~/somecrazyfolder/script1
यह किसी को भी उस विशेष स्क्रिप्ट को चलाने की अनुमति देगा। यदि आप अपने उपयोगकर्ता को अपने उपयोग को प्रतिबंधित करना चाहते हैं, तो आप इसके बजाय इसका उपयोग कर सकते हैं:
chmod u+x ~/somecrazyfolder/script1
इस स्क्रिप्ट को चलाने के लिए, आपको उचित निर्देशिका में सीडी करना होगा और फिर इस तरह की स्क्रिप्ट चलाएं:
cd ~/somecrazyfolder
./script1
चीजों को और अधिक सुविधाजनक बनाने के लिए, आप अपनी होम निर्देशिका में "बिन" फ़ोल्डर में स्क्रिप्ट डाल सकते हैं:
~/bin
कई आधुनिक distros में, यह फ़ोल्डर डिफ़ॉल्ट रूप से नहीं बनाया गया है, लेकिन आप इसे बना सकते हैं। आमतौर पर यह निष्पादन योग्य फ़ाइलें संग्रहीत होती हैं जो आपके उपयोगकर्ता से संबंधित होती हैं, न कि अन्य उपयोगकर्ताओं के लिए। स्क्रिप्ट्स को यहां रखकर, आप उन्हें सीडी के आसपास होने और './' उपसर्ग का उपयोग करने के बजाय, अन्य आदेशों की तरह ही अपना नाम टाइप करके चला सकते हैं।
एक स्क्रिप्ट का नाम देने से पहले, आपको यह जांचने के लिए निम्न आदेश होना चाहिए कि क्या आपके पास कोई प्रोग्राम इंस्टॉल है जो उस नाम का उपयोग करता है:
which [command]
बहुत से लोग अपनी प्रारंभिक स्क्रिप्ट "टेस्ट" नाम देते हैं, और जब वे कमांड लाइन में इसे चलाने का प्रयास करते हैं, तो कुछ भी नहीं होता है। ऐसा इसलिए है क्योंकि यह परीक्षण कमांड के साथ संघर्ष करता है, जो बिना तर्क के कुछ भी करता है। हमेशा सुनिश्चित करें कि आपके स्क्रिप्ट नाम कमांड के साथ संघर्ष नहीं करते हैं, अन्यथा आप स्वयं को ऐसी चीजें कर सकते हैं जो आप करने का इरादा नहीं रखते हैं!
स्क्रिप्टिंग दिशानिर्देश
- प्रत्येक स्क्रिप्ट "#! / बिन / बैश" के साथ होना चाहिए
- हर नई लाइन एक नया आदेश है
- टिप्पणी लाइनें #
- आदेश से घिरे हैं ()
हैश-बैंग हैक
जब एक शेल एक पाठ फ़ाइल के माध्यम से पारदर्शी होता है, तो फ़ाइल को पहचानने का सबसे सीधा तरीका आपकी पहली पंक्ति बनाकर होता है:
#!/bin/bash
यदि आप एक और खोल का उपयोग करते हैं, तो यहां अपना रास्ता बदलें। टिप्पणी लाइनें हैंश (#) से शुरू होती हैं, लेकिन बैंग (!) और शैल पथ जोड़कर यह एक प्रकार का हैक है जो इस टिप्पणी नियम को बाईपास करेगा और स्क्रिप्ट को उस पंक्ति के साथ निष्पादित करने के लिए मजबूर करेगा जो इस पंक्ति को इंगित करता है।
नई रेखा = नया कमान
प्रत्येक नई लाइन को एक नया आदेश, या एक बड़ी प्रणाली का एक घटक माना जाना चाहिए। यदि / / / अन्य विवरण, उदाहरण के लिए, कई पंक्तियों को ले लेंगे, लेकिन उस प्रणाली का प्रत्येक घटक एक नई पंक्ति में है। अगली पंक्ति में एक कमांड को खून बहने दें, क्योंकि यह पिछले कमांड को छोटा कर सकता है और आपको अगली पंक्ति में एक त्रुटि दे सकता है। यदि आपका टेक्स्ट एडिटर ऐसा कर रहा है, तो आपको सुरक्षित पक्ष पर टेक्स्ट-रैपिंग बंद करनी चाहिए। आप एएलटी + एल को मारने वाले नैनो बिट में टेक्स्ट रैपिंग बंद कर सकते हैं।
अक्सर # एस के साथ टिप्पणी
यदि आप # के साथ एक लाइन शुरू करते हैं, तो रेखा को नजरअंदाज कर दिया जाता है। यह इसे एक टिप्पणी पंक्ति में बदल देता है, जहां आप खुद को याद दिला सकते हैं कि पिछले आदेश का आउटपुट क्या था, या अगला आदेश क्या करेगा। दोबारा, पाठ रैपिंग बंद करें, या आपको कई पंक्तियों में टिप्पणी करें जो सभी हैश से शुरू होते हैं। बहुत सारी टिप्पणियों का उपयोग करना एक अच्छा अभ्यास है, क्योंकि यह आपको और अन्य लोगों को आपकी स्क्रिप्ट को अधिक आसानी से ट्विक करने देता है। एकमात्र अपवाद उपरोक्त हैश-बैंग हैक है, इसलिए # एस का पालन न करें।;-)
आदेश माता-पिता से घिरे हुए हैं
पुराने दिनों में, कमांड प्रतिस्थापन एकल टिक अंकों के साथ किए गए थे (`, ~ कुंजी साझा करते हैं)। हम अभी तक इस पर छूने वाले नहीं हैं, लेकिन अधिकांश लोग मूल बातें सीखने के बाद बाहर निकलते हैं और खोजते हैं, शायद यह उल्लेख करना एक अच्छा विचार है कि आपको इसके बजाय कोष्ठक का उपयोग करना चाहिए। यह मुख्य रूप से इसलिए है क्योंकि जब आप घोंसला करते हैं - कमांड को अन्य कमांड के अंदर रखें - कोष्ठक बेहतर काम करते हैं।
आपकी पहली स्क्रिप्ट
आइए एक साधारण स्क्रिप्ट से शुरू करें जो आपको फ़ाइलों की प्रतिलिपि बनाने और फ़ाइल नाम के अंत तक तिथियां जोड़ने की अनुमति देता है। आइए इसे "डेटसीपी" कहते हैं। सबसे पहले, यह देखने के लिए जांचें कि क्या नाम कुछ के साथ संघर्ष करता है:
आइए ~ / bin फ़ोल्डर में एक खाली फ़ाइल बनाएं:
touch ~/bin/datecp
nano ~/bin/datecp
और, आगे बढ़ें और पहले की पंक्ति में डालें, और इस स्क्रिप्ट के बारे में एक टिप्पणी दें।
हम चर परिवर्तनीय में क्या डाल देंगे? खैर, चलो तारीख और समय स्टोर करते हैं! ऐसा करने के लिए, हम डेट कमांड पर कॉल करेंगे।
डेट कमांड के आउटपुट को बनाने के तरीके के लिए नीचे स्क्रीनशॉट पर एक नज़र डालें:
आइए दिनांक कमांड के अंतिम पुनरावृत्ति का उपयोग करें, "दिनांक +% m_% d_% y-% एच%%% S", और हमारी स्क्रिप्ट में इसका उपयोग करें।
variable=$(command –options arguments)
और हमारे लिए, हम इसे इस तरह बना देंगे:
date_formatted=$(date +%m_%d_%y-%H.%M.%S)
यहां एक उदाहरण स्क्रिप्ट और इसका आउटपुट है:
आइए हमारी स्क्रिप्ट पर वापस आएं। आइए अगली कमान के प्रतिलिपि भाग में जोड़ें।
cp –iv $1 $2.$date_formatted
अगला, आप देख सकते हैं कि मैंने "$ 1" विकल्प जोड़ा है।स्क्रिप्टिंग करते समय, एक डॉलर के बाद एक डॉलर का चिह्न ($) उस स्क्रिप्ट के उस क्रमांकित तर्क को इंगित करेगा जब इसे बुलाया गया था। उदाहरण के लिए, निम्न आदेश में:
cp –iv Trogdor2.mp3 ringtone.mp3
पहला तर्क है, ÄúTrogdor2.mp3,Äù और दूसरा तर्क है, Äúringtone.mp3,Äù।
हमारी लिपि पर वापस देखकर, हम देख सकते हैं कि हम दो तर्कों का संदर्भ दे रहे हैं:
दूसरा तर्क, $ 2, एक ही कमांड के लिए आउटपुट फ़ाइल के रूप में कार्य करेगा। लेकिन, आप यह भी देख सकते हैं कि यह अलग है। हमने एक अवधि जोड़ा है और हमने उपरोक्त से Äúdate_formatted,Äù चर संदर्भित किया है। इस बारे में उत्सुक है कि यह क्या करता है?
स्क्रिप्ट चलाए जाने पर क्या होता है:
अब जब मैं datecp कमांड चलाता हूं, तो यह इस स्क्रिप्ट को चलाएगा और मुझे किसी भी फ़ाइल को किसी नए स्थान पर कॉपी करने की अनुमति देगा, और फ़ाइल नाम के अंत में स्वचालित रूप से दिनांक और समय जोड़ देगा। सामान संग्रह करने के लिए उपयोगी!
शेल स्क्रिप्टिंग आपके ओएस को आपके लिए काम करने के दिल में है। ऐसा करने के लिए आपको एक नई प्रोग्रामिंग भाषा सीखनी पड़ेगी, या तो। घर पर कुछ बुनियादी आदेशों के साथ स्क्रिप्टिंग का प्रयास करें और इस बारे में सोचना शुरू करें कि आप इसका क्या उपयोग कर सकते हैं।
क्या आप स्क्रिप्ट करते हैं? नए लोगों के लिए कोई सलाह है? टिप्पणियों में अपने विचारों का साझा करें! इस श्रृंखला में आने के लिए और भी कुछ है!