शेल भाषाएं इंटरैक्टिव उपयोग के लिए उपयोगी हैं। लेकिन यह अनुकूलन अक्सर प्रोग्रामिंग भाषाओं के रूप में उपयोग करने के खिलाफ ट्रेड-ऑफ के साथ आता है, जिसे कभी-कभी शेल स्क्रिप्ट लिखते समय महसूस किया जाता है।
क्या होगा यदि आपका शेल अधिक स्केलेबल प्रोग्रामिंग भाषा को भी समझता है? कहो, पायथन?
Xonsh दर्ज करें।
Xonsh को स्थापित करना वर्चुअल वातावरण बनाने जितना आसान है, pip install xonsh[ptk,linux]
चलाना , और फिर चल रहा है xonsh
।
सबसे पहले, आप सोच सकते हैं कि आपके पायथन शेल में एक अजीब संकेत क्यों है:
$ 1+1
2
अच्छा कैलकुलेटर!
$ print("hello world")
hello world
हम अन्य कार्यों को भी कॉल कर सकते हैं:
$ from antigravity import geohash
$ geohash(37.421542, -122.085589, b'2005-05-26-10458.68')
37.857713 -122.544543
हालांकि, हम अभी भी इसे नियमित शेल की तरह इस्तेमाल कर सकते हैं:
$ echo "hello world"
hello world
हम मिक्स एंड मैच भी कर सकते हैं!
$ for i in range(3):
. echo "hello world"
.
hello world
hello world
hello world
Xonsh प्रॉम्प्ट टूलकिट का उपयोग करके शेल कमांड और पायथन एक्सप्रेशन दोनों के लिए पूर्णता का समर्थन करता है। पूर्णताएं दृष्टिगत रूप से सूचनात्मक होती हैं, संभावित पूर्णताएं दिखाती हैं और इन-बैंड ड्रॉपडाउन सूचियां होती हैं।
यह पर्यावरण पहुंच का भी समर्थन करता है। यह पर्यावरण चर के लिए पायथन प्रकारों को लागू करने के लिए एक सरल लेकिन शक्तिशाली अनुमानी का उपयोग करता है। डिफ़ॉल्ट "स्ट्रिंग" है, लेकिन, उदाहरण के लिए, पथ चर स्वचालित रूप से सूचियां हैं।
$PATH में$ '/usr/bin' in $PATH
True
Xonsh शेल-शैली या पायथन-शैली के बूलियन शॉर्टकट ऑपरेटरों को स्वीकार करता है:
$ cat things
foo
$ grep -q foo things and echo "found"
found
$ grep -q bar things && echo "found"
$ grep -q foo things or echo "found"
$ grep -q bar things || echo "found"
found
इसका मतलब है कि पायथन कीवर्ड की व्याख्या की जाती है। यदि हम किसी प्रसिद्ध डॉ. सीस पुस्तक का शीर्षक प्रिंट करना चाहते हैं, तो हमें कीवर्ड उद्धृत करने होंगे।
$ echo green eggs "and" ham
green eggs and ham
यदि हम ऐसा नहीं करते हैं, तो हमें आश्चर्य होता है:
$ echo green eggs and ham
green eggs
xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
xonsh: subprocess mode: command not found: ham
Did you mean one of the following?
as: Command (/usr/bin/as)
ht: Command (/usr/bin/ht)
mag: Command (/usr/bin/mag)
ar: Command (/usr/bin/ar)
nm: Command (/usr/bin/nm)
आभासी वातावरण थोड़ा मुश्किल हो सकता है। नियमित वर्चुअल वातावरण, जैसा कि वे बैश-जैसे सिंटैक्स पर करते हैं, काम नहीं कर सकते। हालाँकि, Xonsh अपने स्वयं के आभासी पर्यावरण प्रबंधन प्रणाली के साथ आता है जिसे vox
. कहा जाता है ।
vox
~/.virtualenvs
. में वातावरण बना, सक्रिय और निष्क्रिय कर सकता है; यदि आपने virtualenvwrapper
. का उपयोग किया है , यहीं पर परिवेश थे।
ध्यान दें कि वर्तमान सक्रिय परिवेश x
. को प्रभावित नहीं करता है onsh
. यह सक्रिय परिवेश से कुछ भी आयात नहीं कर सकता।
$ xontrib load vox
$ vox create my-environment
...
$ vox activate my-environment
Activated "my-environment".
$ pip install money
...
$ python
...
>>> import money
>>> money.Money('3.14')
$ import money
xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
ModuleNotFoundError: No module named 'money'
पहली पंक्ति vox
. को सक्षम करती है :यह एक xontrib
है , Xonsh के लिए एक तृतीय-पक्ष एक्सटेंशन। xontrib
प्रबंधक सभी संभव xontribs
. को सूचीबद्ध कर सकता है और उनकी वर्तमान स्थिति (स्थापित, लोड, या न तो)।
xontrib
write लिखना संभव है और बस इसे PyPi
. पर अपलोड करें उपलब्ध कराने के। हालांकि, इसे xontrib
. में जोड़ना अच्छा अभ्यास है index तो Xonsh इसके बारे में पहले से जानता है। यह, उदाहरण के लिए, कॉन्फ़िगरेशन विज़ार्ड को इसका सुझाव देने की अनुमति देता है।
यदि आपने कभी सोचा है, "क्या पायथन मेरा खोल हो सकता है?" तो आप केवल एक pip install xonsh
. हैं पता लगाने से दूर।