Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

बैश प्रोग्रामिंग के लिए शुरुआती गाइड: कमांड-लाइन स्क्रिप्टिंग में महारत हासिल करें

यूनिक्स के लिए मूल आशाओं में से एक यह थी कि यह रोजमर्रा के कंप्यूटर उपयोगकर्ताओं को अपने कंप्यूटर को उनकी अनूठी कार्य शैली से मेल खाने के लिए ठीक करने के लिए सशक्त करेगा। कंप्यूटर अनुकूलन के आसपास की अपेक्षाएं दशकों में कम हो गई हैं, और कई उपयोगकर्ता अपने ऐप्स और वेबसाइटों के संग्रह को अपना "कस्टम वातावरण" मानते हैं। इसका एक कारण यह है कि कई ऑपरेटिंग सिस्टम के घटक खुले नहीं हैं, इसलिए उनका सोर्स कोड सामान्य उपयोगकर्ताओं के लिए उपलब्ध नहीं है।

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

प्रोग्रामिंग कैसे सीखें

यदि आपने पहले कभी कोई प्रोग्रामिंग नहीं की है, तो इसे दो अलग-अलग चुनौतियों के रूप में सोचने में मदद मिल सकती है: एक यह समझना है कि कोड कैसे लिखा जाता है, और दूसरा यह समझना है कि क्या कोड लिखना है। आप सिंटैक्स सीख सकते हैं—लेकिन आप भाषा में कौन से शब्द उपलब्ध हैं, यह जाने बिना बहुत दूर नहीं जाएंगे। व्यवहार में, आप दोनों अवधारणाओं को एक साथ सीखना शुरू करते हैं क्योंकि आप शब्दों को व्यवस्थित किए बिना सिंटैक्स नहीं सीख सकते, इसलिए शुरू में, आप बुनियादी कमांड और बुनियादी प्रोग्रामिंग संरचनाओं का उपयोग करके सरल कार्य लिखते हैं। एक बार जब आप बुनियादी बातों से सहज महसूस करते हैं, तो आप भाषा के अधिक हिस्से का पता लगा सकते हैं ताकि आप अपने प्रोग्राम को अधिक से अधिक महत्वपूर्ण चीजें करने में सक्षम बना सकें।

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

इंटरैक्टिव डिज़ाइन

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

लेकिन आपके लिए अपने कंप्यूटर को कुछ करने के लिए बताने में सक्षम होने के लिए, आपको यह जानना होगा कि इसे कैसे करना है। यह एक ऐसा क्षेत्र है जहां बैश उत्कृष्ट है: इंटरैक्टिव प्रोग्रामिंग। जैसे ही आप टर्मिनल में एक क्रिया करते हैं, आप इसे स्क्रिप्ट करना भी सीख रहे हैं।

उदाहरण के लिए, मुझे एक बार बड़ी संख्या में पीडीएफ किताबों को कम-स्याही और प्रिंटर-अनुकूल संस्करणों में बदलने का काम सौंपा गया था। ऐसा करने का एक तरीका पीडीएफ को पीडीएफ संपादक में खोलना है, सैकड़ों छवियों में से प्रत्येक का चयन करें—पेज बैकग्राउंड और टेक्सचर को छवियों के रूप में गिना जाता था—उन्हें हटाएं, और फिर इसे एक नई पीडीएफ के रूप में सहेजें। इस तरह सिर्फ एक किताब में आधा दिन लग जाएगा।

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

कार्य चलाने के लिए एक बुनियादी स्क्रिप्ट तैयार करना केवल उस कमांड और विकल्पों को कॉपी करने और उन्हें टेक्स्ट फाइल में पेस्ट करने का मामला था जिनका उपयोग मैंने पीडीएफ से छवियों को हटाने के लिए किया था। फ़ाइल को स्क्रिप्ट के रूप में चलाने से, संभवतः, वही परिणाम मिलेंगे।

बैश स्क्रिप्ट में तर्क पास करना

टर्मिनल में कमांड चलाने और शेल स्क्रिप्ट में कमांड चलाने के बीच का अंतर यह है कि पूर्व इंटरैक्टिव है। टर्मिनल में, आप चीजों को जैसे-जैसे आगे बढ़ते हैं समायोजित कर सकते हैं। उदाहरण के लिए, यदि मैंने अभी example_1.pdf प्रोसेस किया है और अगले दस्तावेज़ को प्रोसेस करने के लिए तैयार हूँ, तो अपने कमांड को अनुकूलित करने के लिए, मुझे केवल फ़ाइलनाम बदलने की आवश्यकता है।

एक शेल स्क्रिप्ट इंटरैक्टिव नहीं है, हालांकि। वास्तव में, शेल स्क्रिप्ट के अस्तित्व का एकमात्र कारण यह है कि आपको उस पर ध्यान नहीं देना पड़ता। यही कारण है कि कमांड (और शेल स्क्रिप्ट जो उन्हें चलाती हैं) तर्क स्वीकार करते हैं।

एक शेल स्क्रिप्ट में, कुछ पूर्वनिर्धारित चर होते हैं जो दर्शाते हैं कि स्क्रिप्ट कैसे शुरू होती है। प्रारंभिक चर $0 है, और यह स्क्रिप्ट शुरू करने के लिए जारी कमांड को दर्शाता है। अगला चर $1 है, जो शेल स्क्रिप्ट को पास किए गए पहले "तर्क" को दर्शाता है। उदाहरण के लिए, कमांड echo hello में, कमांड echo $0 है, और शब्द hello $1 है। कमांड echo hello world में, कमांड echo $0 है, hello $1 है, और world $2 है।

एक इंटरैक्टिव शेल में:

$ echo hello world
hello world

एक गैर-इंटरैक्टिव शेल स्क्रिप्ट में, आप कर सकते हैं वही काम बहुत शाब्दिक तरीके से करें। इस टेक्स्ट को एक टेक्स्ट फाइल में टाइप करें और इसे hello.sh के रूप में सहेजें:

echo hello world

अब स्क्रिप्ट चलाएँ:

$ bash hello.sh
hello world

यह काम करता है, लेकिन यह इस तथ्य का लाभ नहीं उठाता कि एक स्क्रिप्ट इनपुट ले सकती है। hello.sh को इसमें बदलें:

echo $1

उद्धरण चिह्नों के साथ एक साथ समूहीकृत दो तर्कों के साथ स्क्रिप्ट चलाएँ:

$ bash hello.sh "hello bash"
hello bash

मेरी पीडीएफ कमी परियोजना के लिए, मुझे इस तरह की गैर-इंटरएक्टिविटी की वास्तविक आवश्यकता थी, क्योंकि प्रत्येक पीडीएफ को संघनित करने में कई मिनट लगते थे। लेकिन एक स्क्रिप्ट बनाकर जो मुझसे इनपुट स्वीकार करती थी, मैं स्क्रिप्ट को एक बार में कई पीडीएफ फाइलें खिला सकता था। स्क्रिप्ट ने प्रत्येक को क्रमिक रूप से प्रोसेस किया, जिसमें आधा घंटा या अधिक लग सकता था, लेकिन यह आधा घंटा था जिसका उपयोग मैं अन्य कार्यों के लिए कर सकता था।

फ्लो कंट्रोल

बैश स्क्रिप्ट बनाना पूरी तरह से स्वीकार्य है जो अनिवार्य रूप से, उस सटीक प्रक्रिया के टेप हैं जिसे आपने उस कार्य को प्राप्त करने के लिए लिया था जिसे आप दोहराना चाहते हैं। हालांकि, स्क्रिप्ट को अधिक शक्तिशाली बनाया जा सकता है कि वे जानकारी के प्रवाह को कैसे नियंत्रित करते हैं। स्क्रिप्ट के डेटा पर प्रतिक्रिया को प्रबंधित करने के सामान्य तरीके हैं:

  • if/then
  • for लूप
  • while लूप
  • केस स्टेटमेंट

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

$ bash hello.sh foo
foo
$ bash hello.sh

$

यदि इसे कोई इनपुट नहीं मिलता तो यह अधिक उपयोगकर्ता-अनुकूल होगा यदि यह एक सहायता संदेश प्रदान करता। यह एक if/then स्टेटमेंट है, और यदि आप बैश का बुनियादी तरीके से उपयोग कर रहे हैं, तो आप शायद नहीं जानते कि ऐसा स्टेटमेंट बैश में मौजूद है। लेकिन प्रोग्रामिंग का हिस्सा भाषा सीखना है, और थोड़े शोध से आप if/then स्टेटमेंट के बारे में सीखेंगे:

if [ "$1" = "" ]; then
echo "syntax: $0 WORD"
echo "यदि आप एक से अधिक शब्द प्रदान करते हैं, तो उन्हें उद्धरण में संलग्न करें।"
else
echo "$1"
fi

इस नए संस्करण hello.sh को चलाने का परिणाम है:

$ bash hello.sh
syntax: hello.sh WORD
यदि आप एक से अधिक शब्द प्रदान करते हैं, तो उन्हें उद्धरण में संलग्न करें।
$ bash hello.sh "hello world"
hello world

स्क्रिप्ट के माध्यम से अपना रास्ता बनाना

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

इन तरकीबों को सीखने का एक तरीका अन्य लोगों की स्क्रिप्ट पढ़ना है। इस बात का अहसास करें कि लोग अपने सिस्टम पर रोट कमांड को कैसे स्वचालित कर रहे हैं। देखें कि आपके लिए क्या परिचित लगता है, और उन चीजों के बारे में अधिक जानकारी देखें जो अपरिचित हैं।

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

बैश ईबुक के साथ प्रोग्रामिंग का हमारा परिचय डाउनलोड करें!

  1. Microsoft Lists के साथ शुरुआत: एक शुरुआती गाइड Microsoft Lists के साथ शुरुआत: एक शुरुआती गाइड

    Microsoft Lists Microsoft 365 ऐप स्टेबल में सबसे नया जोड़ है। जबकि नाम आपको इसे Outlook Tasks, To-Do या Planner के एक और पुनरावृत्ति के रूप में लिखने के लिए लुभा सकता है, Lists वास्तव में एक अद्वितीय पेशकश है जो उपरोक्त किसी की तुलना में Excel के करीब है। SharePoint द्वारा संचालित और वेब इंटरफ़ेस क

  1. क्लिपचैम्प के साथ शुरुआत करें: विंडोज 10 और 11 पर मुफ्त वीडियो संपादन क्लिपचैम्प के साथ शुरुआत करें: विंडोज 10 और 11 पर मुफ्त वीडियो संपादन

    क्लिपचैम्प एक वीडियो संपादन उपकरण है जिसका उपयोग हर कोई काम, सोशल मीडिया, और बहुत कुछ के लिए वीडियो बनाने के लिए कर सकता है। माइक्रोसॉफ्ट ने पिछले साल किसी समय प्लेटफॉर्म का अधिग्रहण किया, जो अब विंडोज 10 और विंडोज 11 उपयोगकर्ताओं के लिए मुफ्त में उपलब्ध है। प्रारंभ में, ऐप को ऑफिस 365 में एकीकृत मा

  1. अपनी पहली एलेक्सा स्किल बनाएं: शुरुआती के लिए चरण-दर-चरण गाइड अपनी पहली एलेक्सा स्किल बनाएं: शुरुआती के लिए चरण-दर-चरण गाइड

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