बैश के साथ मेरा थोड़ा सा प्यार और नफरत का रिश्ता है। मैं टर्मिनल में बहुत समय बिताता हूं, और बैश मेरी डिफ़ॉल्ट "प्रोग्रामिंग भाषा" है। कभी-कभी मैं लोगों को बताता हूं कि खोज, grep और xargs अपना बुनियादी ढांचा चलाते हैं, और वे तब तक हंसते और हंसते हैं जब तक उन्हें एहसास नहीं होता कि मैं गंभीर हूं।
सिस्टम प्रशासकों के लिए कुछ पायथन चुनना एक आदर्श विकल्प है। यह उन लोगों के लिए भी बहुत अच्छा है, जिन्हें टर्मिनल में किसी भी चीज़ से निपटना है, लेकिन बैश का उपयोग नहीं करना चाहते हैं, या ऐसी ज़रूरतें हैं जो बैश के लिए बहुत जटिल हैं। एक बार जब कोई कार्य आगे बढ़ जाता है
find $(pwd) -name "*.txt" | xargs -I {} echo "do stuff with {}"
यह पायथन को तोड़ने का समय है!
कमांड लाइन भाषा में जाने के लिए पायथन का उपयोग करने के बहुत सारे लाभ हैं।
- पायथन के पास बहुत सारी अच्छी लाइब्रेरी हैं जो किसी भी चीज़ में मदद कर सकती हैं। इसमें सिस्टम ऑपरेशंस से निपटना, फाइलों को पढ़ना, निर्देशिकाओं को सूचीबद्ध करना, लूप के लिए लिखना, एग्जिट कोड की जांच करना आदि शामिल हैं।
- आईडीई के साथ स्वत:पूर्ण। गंभीरता से। कौन कुछ याद रखना चाहता है?
- मजबूत परीक्षण सूट अगर यह आपकी चीज है (और अगर ऐसा नहीं है, तो आपको इसे अपनी चीज बनाने पर विचार करना चाहिए)।
- आईपायथन कंसोल. यह अद्भुत है। यह आश्चर्यजनक है। मुझे यह पसंद है।
- पायथन अधिकांश प्रणालियों पर उपलब्ध है, और यदि ऐसा नहीं है तो आप इसे मिनिकोंडा के साथ प्राप्त कर सकते हैं।
- कोशिश करें और पकड़ें ब्लॉक के साथ मजबूत त्रुटि जाँच।
- अगर आप अलग-अलग ऑपरेटिंग सिस्टम पर काम करते हैं, तो आप पायथन लाइब्रेरी का इस्तेमाल कर सकते हैं, जो उस सब से निपटेगी।
- भले ही आपके पास प्रोग्रामिंग की कोई क्षमता न हो, आरंभ करने के लिए पायथन एक आसान भाषा है।
आइए प्रारंभ करें
आरंभ करने के लिए, सबसे पहले आपको या तो पायथन को स्थापित करना होगा या इसे मिनिकोंडा के साथ स्थापित करना होगा।
जांचें कि क्या आपने iPython स्थापित किया है
which python
which ipython
यदि ये दोनों सफल होते हैं, तो आप व्यवसाय में हैं! यदि आपके पास Python है, लेकिन iPython नहीं है, तो आपको इसे स्थापित करना होगा। आप इसे सिस्टम पैकेज के रूप में स्थापित कर सकते हैं, लेकिन मैं वास्तव में अनुशंसा करता हूं कि आप इसे मिनिकोंडा के साथ स्थापित करें।
मिनीकोंडा स्थापित करें
यहां अपने ओएस के लिए इंस्टॉलर लें। मेरा सुझाव है कि Python3 इंस्टालेशन प्राप्त करें।
तो यह बस एक साधारण स्थापना है।
bash Miniconda3-latest-Linux-x86_64.sh
संकेतों का पालन करें और आपके पास Miniconda3 इंस्टॉल हो जाएगा। एक बार जब आप इसे स्थापित कर लेते हैं तो आप एक अपडेट चलाना चाहेंगे, क्योंकि यह तकनीक है और निश्चित रूप से आप एक अपडेट चलाना चाहते हैं।;-)
conda update conda
conda config --add channels conda-forge
conda update -y --all
conda install -y ipython
समस्या निवारण
यदि आपको कोई पैकेज स्थापित करने में समस्या हो रही है तो यहां कुछ युक्तियां दी गई हैं।
- चलाएं
conda clean --all
और पुनः प्रयास करें। - सुनिश्चित करें कि आप सही चैनल का उपयोग कर रहे हैं।
- चलाएं
conda update -y --all
- अपने वैश्विक कोंडा स्थान में जितना हो सके कम से कम स्थापित करने का प्रयास करें। इसके बजाय विभिन्न कार्यों और परियोजनाओं के लिए वातावरण बनाएं, जिसके बारे में हम आगे बात करेंगे।
Conda के साथ परिवेश बनाएं
यदि आपने कभी वर्चुअलएन्व, पिपेनव (क्या वह चीज है?), आरबीएनवी, प्लेनव, एनीएनवी या अन्य विभिन्न एनवी का उपयोग किया है जो वर्षों से पॉप अप हुए हैं, तो यह आपको बहुत परिचित लगेगा। विचार यह है कि विभिन्न परियोजनाओं का अपना अलग सॉफ्टवेयर वातावरण होना चाहिए।
conda create -n my-project ipython package1 package2 package2
यदि आप मेरे जैसे हैं और iPython को आसानी से उपलब्ध कराना चाहते हैं, तो सुनिश्चित करें कि आपने इसे किसी भी नए परिवेश में स्थापित किया है!
सिस्टम व्यवस्थापन के लिए पायथन लाइब्रेरी
उदाहरणों में आने से पहले आइए कुछ आसान पैकेजों को उनके दस्तावेज़ों के साथ सूचीबद्ध करें।
मेरा पैकेज में जाना ओएस पैकेज है। आप इसका उपयोग निर्देशिकाओं को सूचीबद्ध करने के लिए कर सकते हैं, जांचें कि क्या फाइलें मौजूद हैं, जांचें कि क्या सिम्लिंक मौजूद हैं, निर्देशिकाएं बनाएं, सिस्टम कमांड चलाएं, पर्यावरण चर प्राप्त करें और सेट करें, और बहुत कुछ। यह बहुत अच्छा है!
सिस्टम कमांड चलाने के लिए मेरा दूसरा पैकेज जो आसान पायथन लाइब्रेरी के रूप में मौजूद नहीं है वह सबप्रोसेस मॉड्यूल है।
शटिल में फ़ाइल संचालन हैं जो ओएस लाइब्रेरी में नहीं हैं।
pprint लाइब्रेरी जटिल डेटा संरचनाओं को अच्छे इंडेंटेशन के साथ प्रिंट करती है।
पाइटेस्ट लाइब्रेरी चलो आप अपने पायथन कोड का परीक्षण करते हैं, क्योंकि आइए इसका सामना करते हैं, पहली बार (कुछ) बार कुछ भी सही ढंग से काम नहीं करता है।
मैं अपना कोड कैसे निष्पादित करूं?
आखिरकार! कोड!
जब आप सिस्टम प्रशासन के लिए पायथन का उपयोग कर रहे हैं तो आप सीधे iPython कंसोल में जा सकते हैं, या स्क्रिप्ट लिख सकते हैं और फिर उन्हें python name-of-script.py
के साथ निष्पादित कर सकते हैं। ।
यदि आप अपनी स्क्रिप्ट लिखना पसंद करते हैं तो आपके पास बहुत सारे विकल्प हैं, और यह वास्तव में व्यक्तिगत पसंद का मामला है। मैं PyCharm का उपयोग करता हूं, जिसका भुगतान किया जाता है, लेकिन विजुअल स्टूडियो कोड और एटम समान रूप से उत्कृष्ट मुफ्त विकल्प हैं।
मुझे लगता है कि यह इस बात पर निर्भर करता है कि मैं किस पर काम कर रहा हूं। कभी-कभी मैं सिर्फ iPython कंसोल खोलता हूं और टाइप करना शुरू करता हूं, और दूसरी बार मुझे परीक्षणों और क्या नहीं के साथ कुछ और मजबूत चाहिए।
यदि आप या तो iPython कंसोल या मेरे द्वारा ऊपर सूचीबद्ध किसी भी संपादक का उपयोग कर रहे हैं, तो आपके पास स्वतः पूर्ण हो जाएगा। स्वतः पूर्ण अद्भुत है! iPython के साथ बस अपना फ़ंक्शन टाइप करना शुरू करें और संभावित कार्यों की सूची प्राप्त करने के लिए टैब दबाएं जो आप चाहते हैं।
मैं व्यक्त नहीं कर सकता कि मुझे स्वतः पूर्ण कितना पसंद है।;-)
सहायता प्राप्त करें
आप किसी भी पुस्तकालय के किसी भी दस्तावेज़ पृष्ठ पर जा सकते हैं, लेकिन यदि आप पुस्तकालय या फ़ंक्शन का नाम जानते हैं तो आप इसे iPython में ला सकते हैं।
आप अधिकांश आईडीई और टेक्स्ट संपादकों में भी सहायता मेनू ला सकते हैं, लेकिन यह आपके संपादक के लिए विशिष्ट होगा।
उदाहरण
सबसे पहले आपको अपने पैकेज आयात करने होंगे
import os
import subprocess
import shutil
from pprint import pprint
यहां सामान्य फ़ाइल और निर्देशिका संचालन के कुछ उदाहरण दिए गए हैं।
# Get your current working directly
# This returns a string
my_cwd = os.getcwd()
print(my_cwd)
# List the contents of a directory
# This returns a list
dir_list = os.listdir()
for item in dir_list:
print(item)
# Get the Absolute Path name of a file (file + current working dir)
os.path.abspath('some-file')
#Get the basename - returns file
os.path.basename('/path/to/file')
# Split a directory path - platform independent
os.path.split(os.getcwd())
# Out[17]: ('/Users', 'jillian')
# Check if a path exists
os.path.exists('/path/on/filesystem')
# Check if a path is a symlink
os.path.islink()
फ़ाइलों और निर्देशिकाओं को इधर-उधर ले जाएँ
# Copy a directory
# cp -rf
shutil.copytree('src', 'dest')
# Copy a file
# cp -rf
shutil.copyfile('file1', 'file2')
# Move a directory
# mv
shutil.move('src', 'dest')
पाइथन पुस्तकालयों के माध्यम से सब कुछ उपलब्ध नहीं होगा, जैसे सिस्टम पुस्तकालय स्थापित करना, इसलिए कुछ सिस्टम कमांड चलाएं!
# Run an arbitrary system command
command = "echo 'hello'"
result = subprocess.run(command.split(' '), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#Print the stdout and stderr
print(result.stdout)
print(result.stderr)
फाइलों में लिखें!
# Write to a file (and create it if it doesn't exist)
# echo "hello" > hello.txt
f= open("hello.txt","w+")
f.write("hello!")
f.close()
# Append to a file
# echo "hello" >> hello.txt
f = open("hello.txt", "a+")
f.write("hello again!")
f.close()
कुछ परीक्षण लिखें!
टेस्ट ज्यादातर मुखर नामक एक फ़ंक्शन का उपयोग करके काम करते हैं, जो अनिवार्य रूप से कह रहा है कि यह सच है और अगर जोर से नहीं मरते हैं।
def test_system_command():
"""Test the exit code of a system command"""
command = "echo 'hello'"
result = subprocess.run(command.split(' '), stdout=subprocess.PIPE)
assert result.returncode == 0
इस फ़ंक्शन को test_my_code.py
. नामक फ़ाइल में रखें और pytest test_my_code.py
. के रूप में चलाएं ।
रैप अप
पाइथन को अपने गो-टू बैश प्रतिस्थापन के रूप में उपयोग करने के लिए यह मेरी मुख्य युक्तियों और युक्तियों के लिए है। अगली बार जब आपको बैश में एक लूप लिखने की आवश्यकता हो, तो iPython कंसोल को तोड़ने पर विचार करें और देखें कि आप इसके बजाय क्या लेकर आ सकते हैं!