And of course, if you need to use any sort of curses type thing, eshell (or M-x shell) often fails in ugly ways.
And of course, if you need to use any sort of curses type thing, eshell (or M-x shell) often fails in ugly ways.
As for running grep/awk/sed in tmux being fast, I don't doubt running the individual program and getting your results is faster, but the interaction in eshell and going beyond, say, grep output and actually being able to go the the line in question, the whole workflow, is much faster than running grep and then firing up an editor on the file and moving to the line. That is the real power, the whole workflow is made faster such that the fact that grep is a slow elisp implementation doesn't matter. And elisp grep really isn't that slow, accessing the file system is the slow part and that's true for both implementations and both can benefit from aggressive file caching anyway.
The less I have to leave emacs during an editing session, the faster/more productive I'll be. And that's the real power of eshell IMO.
Maybe I should use eshell or one of the comint shells more. But I wouldn't want to leave bash/zsh behind -- I might as well be on windows then :) (which is, btw, a strong argument in favor of the workflow you're describing -- for those poor people who are forced to use windows, eshell is a blessing.)
Sorry, I never meant elisp grep was slow. I meant _piping_ was slow.
Here's regular bash in tmux:
$ wc -l fullform_nb.txt
1180517 fullform_nb.txt
$ time sort fullform_nn.txt |grep åbryug
114297 åbryug åbryug adj pos m/f ub eint normert 510 1
114297 åbryug åbryug adj pos nøyt ub eint normert 510 4
114297 åbryug åbryugare adj komp normert 510 5
114297 åbryug åbryugast adj sup ub normert 510 6
114297 åbryug åbryugaste adj sup bu normert 510 7
114297 åbryug åbryuge adj pos bu eint normert 510 3
114297 åbryug åbryuge adj pos fl normert 510 2
real 0m2.888s
user 0m9.570s
sys 0m0.132s
eshell: $ time sort fullform_nn.txt | grep åbryug
114297 åbryug åbryug adj pos m/f ub eint normert 510 1
114297 åbryug åbryug adj pos nøyt ub eint normert 510 4
114297 åbryug åbryugare adj komp normert 510 5
114297 åbryug åbryugast adj sup ub normert 510 6
114297 åbryug åbryugaste adj sup bu normert 510 7
114297 åbryug åbryuge adj pos bu eint normert 510 3
114297 åbryug åbryuge adj pos fl normert 510 2
111.725 secs
Note: the output from grep comes after about 20 seconds, then it runs for 90 sec's until time is done. In any case, way slower than bash in tmux (which is as fast as bash outside tmux). (Silly example, but my real oneliners tend to be rather longer and more cryptic …)And when I try to e.g. "sort -k2,2 -t$'\t' file" it gives zero results, doesn't even tell me whether $'\t' is unsupported, same deal if I try '\t', whereas in bash, if I try a plain '\t', sort at least tells me sort: multi-character tab ‘\\t’. In eshell, I might be mislead to thinking the grep gave zero results. To me, eshell is both slow and dangerous.
I'm happy eshell works for you, but it is just not usable at all for me. OTOH, I'm faster at typing alt-TAB than at C-x b esh RET, so I don't mind having to leave emacs as long as I only ever have to switch between the terminal and emacs.