Emacs'ta aşağıdaki komutları kullanarak bir kabuk çalıştırabilirim -
M-x term
M-x shell
M-x eshell
Bu üç arasındaki fark nedir?
Emacs'ta aşağıdaki komutları kullanarak bir kabuk çalıştırabilirim -
M-x term
M-x shell
M-x eshell
Bu üç arasındaki fark nedir?
Yanıtlar:
shell
bu 3 seçeneğin en eskisi. comint-mode
Bir alt kabuk çalıştırmak için Emacs kullanır (örn. bash
). Bu modda, bir komut satırını düzenlemek için Emacs kullanıyorsunuz. Alt işlem, Enter tuşuna basana kadar herhangi bir girdi görmüyor. Emacs aptal bir terminal gibi davranıyor. Renk kodlarını destekliyor, ancak imleci hareket ettirmek gibi şeyleri desteklemiyor, bu nedenle curses tabanlı uygulamaları çalıştıramazsınız.
term
Emacs Lisp ile yazılmış bir terminal emülatörüdür. Bu modda, bastığınız tuşlar doğrudan alt işleme gönderilir; Emac'ın değil, kabuğun sunduğu çizgi düzenleme yeteneklerini kullanıyorsunuz. Ayrıca imleç hareketi gibi gelişmiş uçbirim yeteneklerini kullanan programları çalıştırmanıza izin verir (örn . Emacs içinde nano
veya less
içinde çalışabilirsiniz ).
eshell
doğrudan Emacs Lisp'te uygulanan bir kabuktur. Çalışan bash
veya alt kabuk olarak başka bir kabuk değil . Sonuç olarak, sözdizimi bash
veya ile tamamen aynı değildir sh
. Bir işlemin çıktısını doğrudan Emacs tamponuna (dene echo hello >#<buffer results>
) yeniden yönlendirmek gibi şeylere izin verir .
Xahlee sayfasına göre :
shell
İşletim Sisteminin komut satırı arabirimine standart emacs arabirimidir.
term
(ansi terimi, bugün terimi ile hemen hemen aynıdır. Farklı paketlerdi, ama şimdi ikisi de term.el'de tanımlandı) bir terminal emülatörüdür. {Xterm, gnome-terminal, puTTY} gibi özel bir terminal uygulaması gibi davranır. Emacs kabuk arayüzünden daha fazla kabuk uygulamasıyla uyumludur, ancak hareketli imleç gibi standart emac tuşları burada çalışmaz (çünkü bir terminali taklit ediyor).
eshell
tamamen emacs lisp ile yazılmış bir kabuktur. Not: bir bash emülatörü değil. Eshell, tek başına bir kabuktur, ancak bash veya diğer kabuklara benzer.
Hangisini kullanmalısın?
Tercihinize göre değişir.
shell
{grep, du, ls, sort, cat, head, tail, uname,…} gibi klasik / standart unix kabuk komutlarının genel kullanımı için iyidir.
term & ansi-term
ssh veya başka bir komut satırı etkileşimli arabirimi ({python, ruby, lisp} shell gibi) veya {vim, synaptic,…} gibi metin tabanlı bir GUI uygulaması çalıştırmak istiyorsanız, kullanışlıdır.
eshell
özellikle bash'ın kurulu olmadığı Microsoft Windows'ta veya eğer bir emacs lisp programcısıysanız, eshell emacs lisp'e doğrudan erişime sahipse iyidir.
which grep
eshll'deki "eshell / grep" in derlenmiş bir Lisp işlevi olduğunu söyleyin. unix.el ', sisteminizde grep'in eshell'de çalıştırılabileceğini, çünkü eshell'in MS'de grep gibi çok küçük aletlerin kurulu olmadığını çok yararlı olduğunu söylediğim gibi.
eshell
yüklü programları varsa, onları da olacak.