मैं पायथन के साथ बैश कैसे बदल सकता हूं?


13

इस SO प्रश्न के लिए स्वीकृत उत्तर के अनुसार: पायथन एक शानदार बैश रिप्लेसमेंट बना सकता है

मेरा सवाल तो यह है: मैं एक सहज स्विच बनाने के बारे में कैसे जाना है? मुझे लगता है कि इस तरह के एक स्विच को बनाने के लिए मुख्य बात यह होगी: वर्चुअल टर्मिनल शुरू करते समय, बॉर्न शेल की तरह कुछ के बजाय कुछ पायथन कॉल करें (हालांकि क्या?)।

क्या इसका कोई मतलब है? यदि हाँ, मैं ऐसा करने के बारे में कैसे जा सकते हैं? सामान्य गोले की यह विकिपीडिया तुलना एक भी पायथन शेल को सूचीबद्ध नहीं करती है: कमांड शेल की तुलना

जवाबों:


16

वह थ्रेड और विशेष रूप से इसका स्वीकृत उत्तर शेल स्क्रिप्टिंग के लिए पायथन का उपयोग करने के बारे में है , न कि एक इंटरैक्टिव शेल के रूप में।

एक अलग भाषा में लिखने स्क्रिप्ट करने के लिए, जैसे डाल #!/usr/bin/env pythonके बजाय #!/bin/bashअपनी स्क्रिप्ट के शीर्ष पर।

यदि आप एक अलग इंटरैक्टिव शेल को आज़माना चाहते हैं, तो इसे चलाएं, जैसे ipythonकि अपने मौजूदा शेल प्रॉम्प्ट पर टाइप करें। यदि आपने उस शेल को अपनाने का फैसला किया है, तो SHELLअपने सत्र की शुरुआत में पर्यावरण चर को निर्धारित करें ( ~/.profileअधिकांश वातावरण में, या ~/.pam_environment), उदाहरण के लिए export SHELL=/usr/bin/ipython( .profileवाक्यविन्यास) या SHELL="/usr/bin/ipython"( .pam_environmentवाक्यविन्यास)।

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


14

मुझे पता है कि यह सवाल अभी काफी पुराना है, लेकिन पायथन 3 के एक सुपरसेट पर आधारित एक नया शेल है जिसे xonsh कहा जाता है, जो कि आप देख सकते हैं।

वेबसाइट से:

Xonsh एक Python-ish, BASHwards- दिखने वाली शेल भाषा और कमांड प्रॉम्प्ट है। भाषा पाइथन 3.4+ का एक सुपरसेट है जिसमें अतिरिक्त शेल प्रिमिटिव हैं जो कि आप बैश और आईपीथॉन से उपयोग किए जाते हैं। यह लिनक्स, मैक ओएसएक्स और विंडोज सहित सभी प्रमुख प्रणालियों पर काम करता है। Xonsh एक जैसे विशेषज्ञों और नौसिखियों के दैनिक उपयोग के लिए है।

इसे xon.sh पर देखें


2

बल्कि नहीं

इसका कारण यह है कि पायथन को उन्नत विशेषाधिकार से निपटने के लिए कोई समर्थन नहीं है। सबसे खराब स्थिति संपादन सिस्टम फ़ाइलों के साथ है।

तुलना

sudo sed -i -e "/\#LXC_DOMAIN/ s/\#//" /etc/default/lxc-net

साथ में:

out = subprocess.run('''sudo sed -i -e "/\#LXC_DOMAIN/ s/\#//" /etc/default/lxc-net''', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,env={"PATH": "/usr/bin"})

आप सिस्टम फ़ाइलों के लिए पायथन की मूल फ़ाइल हैंडलिंग का उपयोग नहीं कर सकते, क्योंकि पायथन स्वाभाविक रूप से उन्नत विशेषाधिकारों के साथ उप-प्रोग्राम निष्पादित करने में असमर्थ है।


1
मुझे यकीन नहीं है कि क्यों सूदो किसी भी चीज़ से बदतर है। यदि आपको sudo की आवश्यकता है, तो आपको / usr / bin / sudo को चलाने की आवश्यकता है, जो कि किसी अन्य की तरह एक प्रोग्राम है। यहां आपका विशेष उदाहरण शेल मानसिकता को लेने और पायथन से इसका उपयोग करने में कठिनाई को दर्शाता है; एक बेहतर तरीका संभव हो सकता है, लेकिन यह कम प्रत्यक्ष अनुवाद होगा।
रोसव

1

Ipython ठीक है। इसके अलावा, 'ओएस' लाइब्रेरी देखें।


आप सही हैं, IPython एक स्पष्ट विकल्प होना चाहिए था ... लेकिन मैं IPython को टर्मिनल एमुलेटर के अंदर, या वास्तविक टर्मिनल के अंदर, स्वचालित रूप से कैसे शुरू करूं?
user89

कमांड: chfn -s $ (जो ipython)
user400344

यह सामने आ गया ... बस: chfn -s $ (जो ipython) ... सुनिश्चित करें कि ipython का पूर्ण पथ / etc / गोले में है।
user400344

एक अन्य विकल्प exec ipythonवर्तमान शेल स्टार्टअप फ़ाइल से है, जैसे.bashrc
ptman
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.