DevOps बूटकैंप · पाठ

स्क्रिप्टिंग की श्रेष्ठ प्रथाएँ और लिंटिंग

कोडिंग परंपराओं, टिप्पणियों और ShellCheck जैसे उपकरणों का उपयोग करके साफ़, पठनीय और त्रुटिरहित Bash स्क्रिप्ट लिखना सीखें।

पाठ 3, कुल 4 में से11 चरण

स्क्रिप्टिंग की श्रेष्ठ प्रथाएँ और लिंटिंग, CoddyKit पर DevOps बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह DevOps बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्क्रिप्टिंग की सर्वोत्तम प्रथाएँ क्यों अपनाएँ

Bash स्क्रिप्ट लिखना शक्तिशाली है, लेकिन अच्छी आदतों के बिना स्क्रिप्ट को समझना, बनाए रखना और उनका त्रुटि-निवारण करना कठिन हो सकता है।

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

  • पढ़ने में आसान: आपके और अन्य लोगों के लिए।
  • बनाए रखना आसान: अद्यतन या सुधार करना सरल।
  • त्रुटियों की कम संभावना वाली: सामान्य गलतियों को रोकने वाली।
  • सहयोग के लिए बेहतर: कोड के रूप और व्यवहार को एकसमान बनाने वाली।

स्पष्टता के लिए टिप्पणियाँ लिखना

टिप्पणियाँ यह समझाने के लिए अत्यंत महत्वपूर्ण हैं कि आपका कोड कुछ क्यों करता है, केवल यह नहीं कि वह क्या करता है। वे आपके भविष्य के स्वयं या अन्य डेवलपरों के लिए नोट्स का काम करती हैं।

टिप्पणियों का उपयोग इन कार्यों के लिए करें:

  • ऊपर स्क्रिप्ट के समग्र उद्देश्य का वर्णन करना।
  • जटिल तर्क या पेचीदे अनुभागों को समझाना।
  • फ़ंक्शन का दस्तावेज़ीकरण करना: उनका उद्देश्य, तर्क और वापसी मान।

टिप्पणी की शुरुआत # (हैश) चिह्न से करें।

#!/bin/bash
# This script demonstrates commenting best practices.
# Author: CoddyKit
# Date: 2023-10-27

# Function: greet_user
# Description: Prints a greeting message to the console.
# Arguments:
#   $1 - The name of the user to greet.
greet_user() {
  local name="$1" # Store the first argument in a local variable.
  echo "Hello, ${name}!" # Output the greeting message.
}

# Main script execution starts here.
echo "Script execution started."
greet_user "CoddyKit Learner" # Call the function with a specific name.
echo "Script execution finished."

स्पष्ट नामकरण परंपराएँ

अर्थपूर्ण नाम आपकी स्क्रिप्ट को समझना आसान बनाते हैं। एक-अक्षर वाले चरों से बचें, जब तक कि वे सामान्य लूप गणक (जैसे i या j) न हों।

सामान्य परंपराएँ:

  • चर: वर्णनात्मक नामों का उपयोग करें (जैसे user_name, log_file)। पर्यावरण चरों या वैश्विक स्थिरांकों के लिए UPPERCASE का उपयोग करें। स्थानीय स्क्रिप्ट चरों के लिए lowercase_with_underscores का उपयोग करें।
  • फ़ंक्शन: lowercase_with_underscores का उपयोग करें और अक्सर क्रिया से शुरुआत करें (जैसे process_data, check_status)।
  • स्क्रिप्ट: lowercase_with_hyphens का उपयोग करें (जैसे backup-script.sh)।

एकसमान स्वरूपण और इंडेंटेशन

इंडेंटेशन और रिक्त स्थान जैसे एकसमान स्वरूपण से पठनीयता में बहुत सुधार होता है। ऐसी पुस्तक पढ़ने की कल्पना कीजिए जिसमें अनुच्छेदों का इंडेंटेशन एकसमान न हो!

मुख्य बिंदु:

  • इंडेंटेशन के लिए 2 या 4 रिक्त स्थानों का उपयोग करें (टैब का उपयोग अक्सर हतोत्साहित किया जाता है)।
  • पंक्तियों को छोटा रखें (टर्मिनल के लिए 80 वर्णों से कम रखना एक अच्छा सामान्य नियम है)।
  • कोड के तार्किक खंडों को अलग करने के लिए रिक्त पंक्तियों का उपयोग करें।
  • जहाँ उचित हो, संबंधित तत्वों को एक सीध में रखें।

आपके द्वारा चुनी गई विशेष शैली से अधिक महत्वपूर्ण एकरूपता है।

मजबूती: 'set -u' (nounset)

set -u (या set -o nounset) विकल्प टाइपिंग की गलतियों या गलती से अनसेट किए गए चरों के कारण होने वाली बग को रोकने में बहुत सहायक है। यदि आपकी स्क्रिप्ट ऐसे चर का उपयोग करने का प्रयास करती है जिसे कोई मान नहीं दिया गया है, तो set -u तुरंत स्क्रिप्ट को त्रुटि के साथ बंद कर देगा।

इससे त्रुटियों को जल्दी पकड़ने में सहायता मिलती है और आपकी स्क्रिप्ट में बाद में होने वाले अनपेक्षित व्यवहार को रोका जा सकता है।

नीचे दिया गया कोड चलाने का प्रयास करें। इसे जल्दी बंद होने के लिए बनाया गया है, क्योंकि UNSET_NAME परिभाषित नहीं है।

#!/bin/bash
# Demonstrating 'set -u' (nounset)

set -u # Exit if an unset variable is used

MY_GREETING="Hello"
echo "${MY_GREETING}, CoddyKit!"

# This variable is NOT set. With 'set -u', the script will exit here.
echo "Your name is: ${UNSET_NAME}" 

echo "This line will NOT be reached if 'set -u' is active and UNSET_NAME is indeed unset."

मजबूती: 'set -o pipefail'

जब आप आदेशों को पाइप करते हैं (जैसे, cmd1 | cmd2 | cmd3), तो Bash सामान्यतः पाइप में मौजूद अंतिम आदेश की निकास स्थिति ही बताता है। इसका अर्थ है कि यदि cmd1 विफल हो जाए, लेकिन cmd2 और cmd3 सफल हों, तो पाइप फिर भी सफलता बता सकती है!

set -o pipefail इस व्यवहार को बदल देता है। यदि पाइप में कोई भी आदेश विफल होता है (शून्येतर निकास स्थिति लौटाता है), तो पूरी पाइप की निकास स्थिति वही शून्येतर स्थिति होगी।

इससे आपकी पाइपलाइन अधिक विश्वसनीय बनती हैं, क्योंकि किसी शुरुआती आदेश के विफल होने पर तुरंत संकेत मिल जाता है।

#!/bin/bash
# Demonstrating 'set -o pipefail'

set -o pipefail # Ensures pipe's exit status is the last non-zero command

echo "Running a failing command in a pipe:"
echo "---"

# 'false' command always fails (exit status 1).
# 'cat /dev/null' always succeeds (exit status 0).
# With 'set -o pipefail', the pipe's overall exit status will be 1 from 'false'.
false | cat /dev/null

# This line will only be reached if the pipe above succeeds.
echo "---"
echo "Script finished successfully (this line won't show if pipe failed with set -o pipefail)."

ShellCheck का परिचय

सर्वोत्तम प्रथाओं के बावजूद, वाक्यविन्यास की छोटी त्रुटियों या सामान्य समस्याओं को नज़रअंदाज़ करना आसान है। यहीं ShellCheck उपयोगी होता है!

ShellCheck शेल स्क्रिप्ट के लिए एक स्थैतिक विश्लेषण उपकरण (एक 'लिंटर') है। यह आपकी स्क्रिप्ट पढ़कर इनकी ओर संकेत करता है:

  • वाक्यविन्यास की त्रुटियाँ।
  • शुरुआती सीखने वालों की सामान्य गलतियाँ।
  • सूक्ष्म अर्थ-संबंधी समस्याएँ।
  • अलग-अलग शेल में चलाने से जुड़ी समस्याएँ।

यह उपयोगी सुझाव देता है और अक्सर अधिक विस्तृत व्याख्याओं के लिंक भी देता है।

कार्य करते हुए ShellCheck: खराब स्क्रिप्ट

आइए कुछ सामान्य समस्याओं वाली स्क्रिप्ट देखें। इनसे स्क्रिप्ट तुरंत बंद नहीं होगी, लेकिन ये खराब प्रथाएँ या संभावित बग हैं।

कल्पना कीजिए कि आपने यह स्क्रिप्ट bad_script.sh के रूप में सहेजी है। इस पर ShellCheck चलाने के लिए आप लिखेंगे: shellcheck bad_script.sh

ShellCheck चलाने से पहले देखें कि क्या आप समस्याओं का पता लगा सकते हैं!

#!/bin/bash
# A script with some common issues

MY_NAME=coddykit # Variable assignment needs no space, but quoting is good for values
echo "Hello $MY_NAME!" # Missing quotes around variable expansion

if [ $1 = "admin" ]; then # Missing quotes around $1
  echo "Welcome, administrator."
fi

# A simple loop with potential issues
for file in *.txt; do # Unquoted glob could expand to multiple arguments
  echo File: $file # Missing quotes around $file
done

ShellCheck चेतावनियाँ ठीक करना

ShellCheck इस तरह का आउटपुट देगा: SC2086: Double quotes missing around "$MY_NAME"। यह अक्सर एक विशिष्ट कोड (जैसे SC2086) देता है, जिसे आप अधिक जानकारी के लिए खोज सकते हैं।

यह पिछली स्क्रिप्ट है, जिसे ShellCheck की सिफारिशों और सामान्य अच्छे तरीकों के अनुसार ठीक किया गया है:

वर्ड स्प्लिटिंग और ग्लोबिंग को रोकने के लिए वेरिएबल विस्तार और कमांड प्रतिस्थापन के चारों ओर डबल कोट्स "" का उपयोग किया गया है। ये बग के आम स्रोत होते हैं।

#!/bin/bash
# A script with issues fixed by ShellCheck

MY_NAME="CoddyKit" # Quote variable assignment values
echo "Hello ${MY_NAME}!" # Always quote variable expansions

if [ "$1" = "admin" ]; then # Quote positional parameters like $1
  echo "Welcome, administrator."
fi

# A simple loop with corrected quoting
for file in *.txt; do 
  echo "File: ${file}" # Quote variable expansions, especially in loops
done

अच्छे तरीकों की जाँच

Bash स्क्रिप्ट लिखते समय निम्नलिखित में से किन तरीकों को अच्छा माना जाता है?

पुनरावलोकन: पेशेवर स्क्रिप्टिंग

बधाई हो! आपने अपनी Bash स्क्रिप्ट को केवल काम करने वाली स्क्रिप्ट से पेशेवर स्क्रिप्ट में बदलना सीख लिया है।

हमने इन विषयों को शामिल किया:

  • पढ़ने में आसानी और रखरखाव के लिए अच्छे तरीकों का महत्व।
  • स्पष्टता के लिए टिप्पणियों और नामकरण परंपराओं का उपयोग।
  • set -u और set -o pipefail से स्क्रिप्ट को मजबूत बनाना।
  • समस्याओं को अपने-आप ढूँढ़ने और अपने कोड को बेहतर बनाने में ShellCheck की शक्ति।

इन सिद्धांतों को लागू करके आप अधिक विश्वसनीय, समझने योग्य और सहयोग के अनुकूल Bash स्क्रिप्ट लिख पाएँगे। अभ्यास करते रहिए!

शुरुआत निःशुल्क

एआई शिक्षक के साथ DevOps बूटकैंप सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
142
पाठ
568

अक्सर पूछे जाने वाले प्रश्न

क्या “स्क्रिप्टिंग की श्रेष्ठ प्रथाएँ और लिंटिंग” पाठ निःशुल्क है?

हाँ — DevOps बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “स्क्रिप्टिंग की श्रेष्ठ प्रथाएँ और लिंटिंग” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“स्क्रिप्टिंग की श्रेष्ठ प्रथाएँ और लिंटिंग” में मैं क्या सीखूँगा?

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

क्या DevOps बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर DevOps बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“स्क्रिप्टिंग की श्रेष्ठ प्रथाएँ और लिंटिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस DevOps बूटकैंप पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर DevOps बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Bash स्क्रिप्ट की डिबगिंग (set -x, trap)
  2. त्रुटि प्रबंधन और निकास स्थिति
  3. स्क्रिप्टिंग की श्रेष्ठ प्रथाएँ और लिंटिंग
  4. Bats से Bash स्क्रिप्ट का परीक्षण
← DevOps बूटकैंप पर वापस जाएँ