Emacs में मैं निम्नलिखित कमांड्स का उपयोग करके एक शेल चला सकता हूं -
M-x term
M-x shell
M-x eshell
इन तीनों में क्या अंतर है?
Emacs में मैं निम्नलिखित कमांड्स का उपयोग करके एक शेल चला सकता हूं -
M-x term
M-x shell
M-x eshell
इन तीनों में क्या अंतर है?
जवाबों:
shell
इन 3 विकल्पों में से सबसे पुराना है। यह comint-mode
एक उपधारा (जैसे bash
) को चलाने के लिए Emacs का उपयोग करता है । इस मोड में, आप कमांड लाइन को संपादित करने के लिए Emacs का उपयोग कर रहे हैं। जब तक आप Enter दबाते हैं तब तक उपप्रकार किसी भी इनपुट को नहीं देखता है। Emacs एक डंब टर्मिनल की तरह काम कर रहा है। यह कलर कोड का समर्थन करता है, लेकिन कर्सर को इधर-उधर ले जाने जैसी चीजों का नहीं, इसलिए आप शाप-आधारित एप्लिकेशन नहीं चला सकते।
term
Emacs Lisp में लिखा एक टर्मिनल एमुलेटर है। इस मोड में, आपके द्वारा दबाए गए कुंजी को सीधे उपप्रकार में भेजा जाता है; आप जो भी लाइन संपादन क्षमताओं का उपयोग कर रहे हैं वह शेल प्रस्तुत करता है, Emacs का नहीं। यह आपको ऐसे प्रोग्राम चलाने की भी अनुमति देता है जो कर्सर मूवमेंट (जैसे आप ईमैक चला सकते हैं nano
या less
अंदर कर सकते हैं ) जैसी उन्नत टर्मिनल क्षमताओं का उपयोग करते हैं ।
eshell
Emacs Lisp में सीधे लागू किया गया एक शेल है। आप bash
सबप्रोसेस के रूप में नहीं चल रहे हैं या कोई अन्य शेल नहीं है । नतीजतन, वाक्यविन्यास bash
या के समान नहीं है sh
। यह एक Emacs बफर (कोशिश echo hello >#<buffer results>
) को सीधे एक प्रक्रिया के उत्पादन को पुनर्निर्देशित करने जैसी चीजों की अनुमति देता है ।
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
विशेष रूप से माइक्रोसॉफ्ट विंडोज पर अच्छा है, जहां बैश स्थापित नहीं है, या, यदि आप एक ईमैक लिस्प प्रोग्रामर हैं, क्योंकि एशेल में ईमैक्स लिस्प का सीधा उपयोग होता है।
which grep
eshll में "eshell / grep एक" संकलित लिस्प फंक्शन `em- में कहता है unix.el ', क्योंकि आपके सिस्टम के grep को एस्केल में निष्पादित किया जा सकता है, जैसे मैंने कहा कि eshell MS में बहुत उपयोगी है, जिसमें grep जैसे बहुत छोटे उपकरण स्थापित नहीं हैं।
eshell
यदि आप उन कार्यक्रमों को स्थापित किया है, तो उन्हें भी होगा।