I am fond of using Emacs for cubes. It is a subject I have written about earlier — such as Running Shells in the Complete Guide to Mastering EShell — but now the focus is razor sharp: it is about control background, and how it is possible to use it in Emacs’s Shell manner and everywhere — in reality, they will also work with apps like the Python and Ruby shells.
Before I go any farther, it is worth it to mention that again if you aren’t comfortable: Emacs’s shell style isn’t just like M-x ansi-term, an authentic terminal emulator; rather, M-x shell only re-directs the pipes (well, it really attempts to utilize pseudoterminals…) therefore the app speaks directly to Emacs. No emulation here. That as you’ll see below — Emacs must re-invent everything . The upshot is that you get to gain from this performance, although the drawback is it is never 100%. I utilize shell for all, and I believe it useable and full-featured although it’s not ideal.
So most orders that speak to the world, together with EShell being a prominent exception, are predicated on COMINT . That is a frame, if you prefer, for process communicating that is out-of-Emacs. What it provides you as a elisp hacker is a lot of useful commands that kinda-sorta only get the job done for many items that involve a typical commandline program: background, instantaneous discovery, highlighting, sending and getting things, plus even more.
Shell relies on Comint and are most popular integrations such as the Python shell and so forth. This provides you with consistency.