Emacs में शेल, एशेल और टर्म के बीच अंतर क्या है?


60

Emacs में मैं निम्नलिखित कमांड्स का उपयोग करके एक शेल चला सकता हूं -

M-x term

M-x shell

M-x eshell

इन तीनों में क्या अंतर है?

जवाबों:


61

shellइन 3 विकल्पों में से सबसे पुराना है। यह comint-modeएक उपधारा (जैसे bash) को चलाने के लिए Emacs का उपयोग करता है । इस मोड में, आप कमांड लाइन को संपादित करने के लिए Emacs का उपयोग कर रहे हैं। जब तक आप Enter दबाते हैं तब तक उपप्रकार किसी भी इनपुट को नहीं देखता है। Emacs एक डंब टर्मिनल की तरह काम कर रहा है। यह कलर कोड का समर्थन करता है, लेकिन कर्सर को इधर-उधर ले जाने जैसी चीजों का नहीं, इसलिए आप शाप-आधारित एप्लिकेशन नहीं चला सकते।

termEmacs Lisp में लिखा एक टर्मिनल एमुलेटर है। इस मोड में, आपके द्वारा दबाए गए कुंजी को सीधे उपप्रकार में भेजा जाता है; आप जो भी लाइन संपादन क्षमताओं का उपयोग कर रहे हैं वह शेल प्रस्तुत करता है, Emacs का नहीं। यह आपको ऐसे प्रोग्राम चलाने की भी अनुमति देता है जो कर्सर मूवमेंट (जैसे आप ईमैक चला सकते हैं nanoया lessअंदर कर सकते हैं ) जैसी उन्नत टर्मिनल क्षमताओं का उपयोग करते हैं ।

eshellEmacs Lisp में सीधे लागू किया गया एक शेल है। आप bashसबप्रोसेस के रूप में नहीं चल रहे हैं या कोई अन्य शेल नहीं है । नतीजतन, वाक्यविन्यास bashया के समान नहीं है sh। यह एक Emacs बफर (कोशिश echo hello >#<buffer results>) को सीधे एक प्रक्रिया के उत्पादन को पुनर्निर्देशित करने जैसी चीजों की अनुमति देता है ।


19

Xahlee पृष्ठ के अनुसार :

shell ऑपरेटिंग सिस्टम की कमांड लाइन इंटरफेस के लिए मानक emacs इंटरफ़ेस है।

term(एएनआई-टर्म आज टर्म के लिए बहुत समान है। वे अलग-अलग पैकेज थे, लेकिन अब दोनों टर्म में परिभाषित हैं) एक टर्मिनल एमुलेटर है। यह एक समर्पित टर्मिनल ऐप की तरह व्यवहार करता है, जैसे {xterm, gnome-terminal, puTTY}। यह एमएसीएस शेल इंटरफेस की तुलना में अधिक शेल ऐप्स के लिए अनुकूल है, लेकिन मूविंग कर्सर जैसी मानक ईमैक्स कुंजियां यहां काम नहीं करती हैं (क्योंकि यह एक टर्मिनल का अनुकरण कर रही है।)

eshellएक शेल है जो पूरी तरह से ईमैक लिस्प में लिखा गया है। नोट: यह बैश एमुलेटर नहीं है। Eshell अपने आप में एक शेल है, लेकिन बैश या अन्य शेल के समान है।

जो आपको उपयोग करना चाहिए?

यह आपकी पसंद पर निर्भर करता है।

shell क्लासिक / मानक यूनिक्स शेल कमांड के सामान्य उपयोग के लिए अच्छा है, जैसे {grep, du, ls, sort, cat, head, tail, uname,…}।

term & ansi-term यदि आप ssh, या अन्य कमांड लाइन इंटरएक्टिव इंटरफ़ेस (जैसे {python, ruby, lisp} shell), या टेक्स्ट आधारित GUI ऐप जैसे {vim, synaptic,…} जैसे सामान चलाना चाहते हैं तो अच्छा है।

eshell विशेष रूप से माइक्रोसॉफ्ट विंडोज पर अच्छा है, जहां बैश स्थापित नहीं है, या, यदि आप एक ईमैक लिस्प प्रोग्रामर हैं, क्योंकि एशेल में ईमैक्स लिस्प का सीधा उपयोग होता है।


आपके द्वारा बताई गई सभी कमांड (grep, du, ls, आदि) शेल में निर्मित प्रोग्राम और कमांड हैं। eshellयदि आप उन कार्यक्रमों को स्थापित किया है, तो उन्हें भी होगा।
बार्ट लूवर्स

1
@ अपने सिस्टम में अपने grep को हटाने की कोशिश करें और eshell में grep एक्शन करें, आप पाएंगे कि eshell में grep आपके सिस्टम में grep नहीं है, which grepeshll में "eshell / grep एक" संकलित लिस्प फंक्शन `em- में कहता है unix.el ', क्योंकि आपके सिस्टम के grep को एस्केल में निष्पादित किया जा सकता है, जैसे मैंने कहा कि eshell MS में बहुत उपयोगी है, जिसमें grep जैसे बहुत छोटे उपकरण स्थापित नहीं हैं।
कोडिचन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.