Sh – शेल कमांड प्रबंधन

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Sh लाइब्रेरी क्या है

Python में कई प्रोजेक्ट्स में shell-कमांड चलाने की ज़रूरत होती है: फ़ाइलों को मैनेज करना, सिस्टम प्रोसेस चलाना, या CLI टूल्स के साथ काम करना। os.system या subprocess का उपयोग संभव है, लेकिन ये भारी हैं और इनमें आर्गुमेंट्स, एरर और आउटपुट को मैन्युअली हैंडल करना पड़ता है।

Sh लाइब्रेरी shell-कमांड को Python फंक्शन की तरह कॉल करने का एक साफ और पायथोनिक तरीका प्रदान करती है। यह बाहरी उपयोगिताओं को इंटीग्रेट करना आसान बनाती है, कोड को पढ़ने लायक और डीबग करने में आसान बनाती है।

Sh के उपयोग के फायदे

Sh लाइब्रेरी के पास सिस्टम कमांड चलाने के मानक तरीकों की तुलना में कई महत्वपूर्ण फायदे हैं:

पढ़ने में आसान और सरल सिंटैक्स - कमांड Python फंक्शन की तरह दिखते हैं, जिससे कोड ज़्यादा समझने योग्य और मेंटेन करने योग्य बनता है।

ऑटोमैटिक एरर हैंडलिंग - लाइब्रेरी ऑटोमैटिक रूप से रिटर्न कोड को हैंडल करती है और एरर होने पर एक्सेप्शन फेंकती है।

सुरक्षा - आर्गुमेंट्स को सही तरीके से एस्केप करके कमांड इंजेक्शन से बचाव।

लचीलापन - पाइपलाइन, बैकग्राउंड एक्ज़ीक्यूशन, स्ट्रीमिंग इनपुट-आउटपुट और कई अन्य सुविधाओं का समर्थन।

इंस्टॉलेशन और इंपोर्ट

लाइब्रेरी को pip के ज़रिए इंस्टॉल करें:

pip install sh

कोड में इस्तेमाल करने के लिए बस एक इंपोर्ट काफी है:

import sh

काम करने के मूल सिद्धांत

Sh ऑटोमैटिक रूप से किसी भी shell-कमांड के नाम को Python फंक्शन में मैप कर देता है। इससे उन्हें स्वाभाविक रूप से कॉल किया जा सकता है:

print(sh.ls("-l"))

हर कॉल एक ऑब्जेक्ट लौटाता है जिसमें stdout होता है, जिसे स्ट्रिंग, स्ट्रिंग की लिस्ट, बाइट्स और अन्य फॉर्मेट में बदला जा सकता है।

बेसिक उपयोग

फ़ाइलों के साथ काम करना

# फ़ाइलों की सूची
print(sh.ls("-lah"))

# फ़ाइल बनाना
sh.touch("file.txt")

# फ़ाइल कॉपी करना
sh.cp("file.txt", "copy.txt")

# फ़ाइल डिलीट करना
sh.rm("copy.txt")

# डायरेक्टरी बनाना
sh.mkdir("test_dir")

# फ़ाइल को मूव करना
sh.mv("file.txt", "test_dir/")

टेक्स्ट के साथ काम करना

# फ़ाइल की सामग्री दिखाना
content = sh.cat("file.txt")
print(str(content))

# फ़ाइलों में सर्च करना
matches = sh.grep("python", "*.py")
for match in matches:
    print(match.strip())

# लाइनों की गिनती
line_count = sh.wc("-l", "file.txt")
print(f"लाइनों की संख्या: {line_count.strip()}")

आर्गुमेंट्स और ऑप्शन के साथ काम करना

Sh कमांड में आर्गुमेंट पास करने के कई तरीके सपोर्ट करता है:

पोज़ीशनल आर्गुमेंट्स

sh.ls("--color", "auto", "/home/user")

नेम्ड आर्गुमेंट्स

# लंबे ऑप्शन
sh.ls(color="auto", all=True, human_readable=True)

# छोटे ऑप्शन
sh.ls(a=True, l=True, h=True)

कॉम्बिनेशन अप्रोच

# मिक्स्ड उपयोग
sh.find("/home", name="*.py", type="f")

कमांड आउटपुट को हैंडल करना

स्ट्रिंग के रूप में रिजल्ट प्राप्त करना

output = sh.ls()
print(str(output))

लाइन-बाय-लाइन प्रोसेसिंग

for line in output:
    print(line.strip())

बाइट्स के साथ काम करना

raw_output = sh.ls()
bytes_data = raw_output.stdout

स्ट्रिंग की लिस्ट में बदलना

lines = str(sh.ls()).split('\n')
for line in lines:
    if line.strip():
        print(line)

एरर हैंडलिंग

Sh लाइब्रेरी एरर हैंडल करने के लिए शक्तिशाली तंत्र प्रदान करती है:

बेसिक एरर हैंडलिंग

अनुशंसाएँ