Most people who use Eshell a lot need to be aware of the limitations of its support for shell pipelines: primarily, that all data in pipelines has to go through Emacs buffers, and that can be slow. If you're running pipelines which will move a lot of data, you should use a system shell which will be more performant. Currently, if Eshell is your primary shell, it's not particularly convenient to switch to using an operating system shell when you're preparing a pipeline that you know is going to move a lot of data. You would need either to switch to a shell-mode buffer, or quote and escape your Eshell input and put something like `bash -c' in front of it. I think that it would be good to have a way to easily toggle Eshell's own pipelining support on and off for particular commands. I have come up with the attached patches. When the new functions I've defined are enabled, you can type !! foo | bar 'arg' >baz >># and it will be executed by Eshell as if you had typed bash -c 'foo | bar '"'"'arg'"'"' >baz' >># The idea is that you can easily toggle Eshell's pipelining on and off as appropriate to your needs just by adding and removing the "!!" prefix. I think that the patches I've prepared are a clean implementation of this feature that would be good to include in Emacs. -- Sean Whitton