Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
#######
#
# E-scripts on eshell.
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
# An introduction to eev can be found here:
#
#   (find-eev-quick-intro)
#   http://angg.twu.net/eev-intros/find-eev-quick-intro.html
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://angg.twu.net/e/eshell.e>
#           or at <http://angg.twu.net/e/eshell.e.html>.
#        See also <http://angg.twu.net/emacs.html>,
#                 <http://angg.twu.net/.emacs[.html]>,
#                 <http://angg.twu.net/.zshrc[.html]>,
#                 <http://angg.twu.net/escripts.html>,
#             and <http://angg.twu.net/>.
#
#######




# «.asking-for-examples»	(to "asking-for-examples")
# «.eshell/foo»			(to "eshell/foo")
# «.dollars-expansion»		(to "dollars-expansion")
# «.for-loop»			(to "for-loop")
# «.hacker-news»		(to "hacker-news")
# «.eshell-insert-buffer-name»	(to "eshell-insert-buffer-name")
# «.eshell-keymaps»		(to "eshell-keymaps")
# «.eshell-help»		(to "eshell-help")
# «.eshell/ls»			(to "eshell/ls")
# «.complex-commands»		(to "complex-commands")
# «.eshell/fakewget»		(to "eshell/fakewget")
# «.eshell/wget-emacs-devel»	(to "eshell/wget-emacs-devel")
# «.fakewget-unreliable»	(to "fakewget-unreliable")
# «.eshell/alias»		(to "eshell/alias")
# «.process-environment»	(to "process-environment")
# «.eshell-plain-echo-behavior»	(to "eshell-plain-echo-behavior")
# «.emacsconf2022»		(to "emacsconf2022")
# «.reduce-latency»		(to "reduce-latency")




https://www.emacswiki.org/emacs/CategoryEshell

# (find-es "emacs" "eshell")
# (find-eshellfile "")
# (find-eshellfile "eshell.el")
# (find-eshellnode "Aliases")
# (find-eshellnode "Input/Output")
# (find-eshellnode "Input/Output" "Redirection")




#####
#
# My message on help-gnu-emacs asking for examples and snippets
# 2022aug22
#
#####

# «asking-for-examples»  (to ".asking-for-examples")
# https://lists.gnu.org/archive/html/help-gnu-emacs/2022-08/msg00270.html
# Subj: Examples of usage of Eshell (for a tutorial)?

Hi all,

first of all, apologies if this sounds like a lazy question... it's
for a good cause, I swear! =)

I would like to write a (sort of) mini-tutorial on Eshell that would
be made mostly of examples that can be executed with this,

  http://angg.twu.net/eepitch.html

with links to docs of all kinds. Here are some examples of other
sort-of-tutorials written in that way:

  http://angg.twu.net/e/lua-intro.e.html#intro:PP
  http://angg.twu.net/e/python.e.html#tut-numbers

Do you have any snippets, or links to pages with snippets, to suggest?
I know the info manual of Eshell and I've tried to read it several
times, but most of the features that it describes are "example-less" -
I've tried to write snippets that demonstrate them, but failed or gave
up...

  Thanks in advance!
    Eduardo Ochs
    http://angg.twu.net/#eev




#####
#
# How to define a new builtin "foo" by defun-ing eshell/foo
# 2021oct06
#
#####

# «eshell/foo»  (to ".eshell/foo")
# (find-eshellnode "Top" "an alternative to the IELM")
# (find-eshellnode "Built-ins" "name starting with" "eshell/")
# (find-eshellgrep "grep --color=auto -nH --null -e 'defun eshell/' *.el")

* (eepitch-eshell)
* (eepitch-kill)
* (eepitch-eshell)
(defun eshell/foo (&rest args) "hello")
foo  bar  plic
(defun eshell/foo (&rest args) (format "%S" args))
foo  bar  plic
(defun eshell/foo (&rest args) (error "Bang"))
foo  bar  plic
(defun eshell/foo (&rest args) nil)
foo  bar  plic
(defun eshell/foo (&optional a b) (list a :: b))
foo  bar  plic
(defun eshell/foo (&optional a b) (format "%s::%s" a b))
foo  bar  plic
foo  bar

(defun eshell/foo (&optional a b)
  (format "%s::::%s" a b))

foo  bar  plic



#####
#
# dollars-expansion
# 2022aug21
#
#####

# «dollars-expansion»  (to ".dollars-expansion")
# (find-eshellnode "Dollars Expansion" "$VAR")
# (find-eshellnode "Dollars Expansion" "$\"VAR\"")
# (find-eshellnode "Dollars Expansion" "$'VAR'")
# (find-eshellnode "Dollars Expansion" "$(LISP)")
# (find-eshellnode "Dollars Expansion" "${COMMAND}")
# (find-eshellnode "Dollars Expansion" "$<COMMAND>")
# (find-eshellnode "Dollars Expansion" "$EXPR[I...]")
# (find-eshellnode "Dollars Expansion" "$EXPR[REGEXP I...]")
# (find-eshellnode "Dollars Expansion" "$#EXPR")

# (find-eshellnode "Expansion" "${echo \"foo\"}bar")




#####
#
# for-loop
# 2022aug21
#
#####

# «for-loop»  (to ".for-loop")
# (find-eshellnode "for loop")
# (find-man "1 seq")
# (find-man "1 seq" "FIRST INCREMENT LAST")

* (eepitch-eshell)
* (eepitch-kill)
* (eepitch-eshell)
           seq 10 2 20
echo     ${seq 10 2 20}
for i in ${seq 10 2 20} { echo :$i: }




#####
#
# Posts about eshell on hackernews
# 2022aug21
#
#####

# «hacker-news»  (to ".hacker-news")
# https://hn.algolia.com/?q=eshell
# https://news.ycombinator.com/item?id=2668007  A nice little hack to evaluate scripts from emacs' eshell (ktuman.blogspot.com)
# https://news.ycombinator.com/item?id=27884822 Best terminal – Why Eshell? series (birkey.co)
# https://news.ycombinator.com/item?id=27561350 Blurring the lines between shell and editor (xenodium.com)
# https://news.ycombinator.com/item?id=27567907 Blurring the lines between shell and editor (xenodium.com)
# https://news.ycombinator.com/item?id=14935842 Converting Your Bash Configuration to Eshell (skyefreeman.io)
# https://news.ycombinator.com/item?id=26709186 Emacs: Difference between shell, term, eshell (ergoemacs.org)
# https://news.ycombinator.com/item?id=14825607 Eschewing Zshell for Emacs Shell (howardism.org)
# https://news.ycombinator.com/item?id=18957875 Eschewing Zshell for Emacs Shell (howardism.org)
# https://news.ycombinator.com/item?id=8649856  Eschewing Zshell for Emacs (howardism.org)
# https://news.ycombinator.com/item?id=20205103 Presenting the Eshell (howardism.org)
# https://news.ycombinator.com/item?id=17026490 Eshell as a main shell (ambrevar.bitbucket.io)
# https://news.ycombinator.com/item?id=24547400 Eshell versus M-X Shell (ambrevar.xyz)
# https://news.ycombinator.com/item?id=15913455 Eshell: things I’ve totally underestimated – X11 Must DIE (debianjoe.wordpress.com)
# https://news.ycombinator.com/item?id=6673676  Finally wrapping my head around eshell (the emacs shell) (blogbyben.com)
# https://news.ycombinator.com/item?id=31424521 Living the Eshell Dream: A Reduction in Latency from 70 Seconds to 3 Seconds (tdodge.consulting)
# https://news.ycombinator.com/item?id=31437660 Living the Eshell Dream: A Reduction in Latency from 70 Seconds to 3 Seconds (tdodge.consulting)
# https://news.ycombinator.com/item?id=2004217  Complete guide to mastering eshell, the emacs lisp shell (masteringemacs.org)
# https://news.ycombinator.com/item?id=2002037  Mastering Eshell. (masteringemacs.org)
# https://news.ycombinator.com/item?id=2003557  A Complete Guide to Mastering Eshell (masteringemacs.org)
# https://news.ycombinator.com/item?id=15551106 Mastering Eshell (masteringemacs.org)
# https://news.ycombinator.com/item?id=17135947 Mastering Eshell (masteringemacs.org)
# https://news.ycombinator.com/item?id=32477938 Mastering Eshell (masteringemacs.org)
# https://news.ycombinator.com/item?id=32481533 Emacs: Mastering Eshell (masteringemacs.org)
# https://news.ycombinator.com/item?id=2971006  More Emacs - a better eshell (dieblinkenlights.com)
# https://news.ycombinator.com/item?id=15779520 Yes Eshell Is My Main Shell (reddit-src) (reddit.com)
# https://news.ycombinator.com/item?id=15186504 Yes, eshell is [his] main shell (reddit.com)




#####
#
# C-c M-b: eshell-insert-buffer-name
# 2022aug21
#
#####

# «eshell-insert-buffer-name»  (to ".eshell-insert-buffer-name")
# https://www.masteringemacs.org/article/complete-guide-mastering-eshell#useful-keybindings
# (find-fline "~/LOGS/2022aug21.emacs" "<wgreenhouse> edrx: C-c M-b")
# (find-fline "~/LOGS/2022aug21.emacs" "neofetch > #<buffer *scratch*>")
# (find-eshellnode "Input/Output")
# (find-eshellnode "Input/Output" "echo hello >>> #<buffer *scratch*>")
# (find-eapropos  "eshell.*insert")
# (find-eshellgrep "grep --color=auto -nH --null -e eshell-insert *.el")
# (find-efunctiondescr 'eshell-insert-buffer-name)
# (find-efunction      'eshell-insert-buffer-name)
# (find-hvariable      'eshell-arg-mode-map)
# (find-evardescr      'eshell-arg-mode-map)
# (find-evariable      'eshell-arg-mode-map)
# (find-efunctiondescr 'eshell-insert-envvar)
# (find-efunction      'eshell-insert-envvar)
# (find-efunctiondescr 'eshell-insert-process)
# (find-efunction      'eshell-insert-process)



#####
#
# eshell-keymaps
# 2022aug21
#
#####

# «eshell-keymaps»  (to ".eshell-keymaps")
# (find-eapropos  "eshell.*map")
# (find-hvariable 'eshell-arg-mode-map)
# (find-hvariable 'eshell-cmpl-mode-map)
# (find-hvariable 'eshell-command-map)
# (find-hvariable 'eshell-command-mode-map)
# (find-hvariable 'eshell-hist-mode-map)
# (find-hvariable 'eshell-isearch-map)
# (find-hvariable 'eshell-mode-map)
# (find-hvariable 'eshell-pred-mode-map)
# (find-hvariable 'eshell-proc-mode-map)
# (find-hvariable 'eshell-prompt-mode-map)
# (find-hvariable 'eshell-var-mode-map)

(find-eshellnode "Input/Output")
(find-eshellnode "Input/Output" "/dev/kill")


# (find-evardescr 'eshell-mode-map)
# (find-evariable 'eshell-mode-map)
# (find-hvariable 'eshell-mode-map)
# (find-ekeymapdescr eshell-mode-map)





#####
#
# eshell-help
# 2021oct06
#
#####

# «eshell-help»  (to ".eshell-help")

* (eepitch-eshell)
* (eepitch-kill)
* (eepitch-eshell)
help

# (find-egrep "grep --color=auto -nH --null -e MetaHelp *.el */*.el")
# (find-egrep "grep --color=auto -nH --null -e MetaHelp *.el")
# (find-egrep "grep --color=auto -nH --null -e 'Describe a specific Emacs package' *.el */*.el")
# (find-efile "help.el" "(defalias 'help 'help-for-help)")




#####
#
# eshell/ls
# 2021oct06
#
#####

# «eshell/ls»  (to ".eshell/ls")

* (eepitch-eshell)
* (eepitch-kill)
* (eepitch-eshell)
which ls
# eshell/ls is a compiled Lisp function in `em-ls.el'
# (find-eshellfile "em-ls.el" "defsubst eshell/ls")

which echo
echo 'foo  bar'
echo  foo  bar

# (find-node "(eshell)Top")
# (find-node "(eshell)Top" "alternative to the IELM")
# (find-node "(eshell)Built-ins" "eshell/ls")
# (find-efunctiondescr 'eshell/ls)
# (find-efunction      'eshell/ls)
# (find-eshellgrep "grep --color -nH --null -e eshell/ *.el")
# (find-eshellfile "em-ls.el" "(defsubst eshell/ls")

# (find-efunctiondescr 'defsubst)
# (find-efunction      'defsubst)
# (find-eapropos "eshell/")



#####
#
# complex-commands
# 2021oct06
#
#####

# «complex-commands»  (to ".complex-commands")
# (find-eshellgrep "grep --color -nH --null -e eshell-complex-commands *.el")
# (find-evardescr 'eshell-complex-commands)
# (find-evariable 'eshell-complex-commands)



#####
#
# eshell/fakewget
# 2021oct06
#
#####

# «eshell/fakewget»  (to ".eshell/fakewget")
# (find-eev "eev-plinks.el" "find-urlretrieve" "eshell/fakewget")

;; Original defs:
;; (find-angg ".emacs" "eepitch.el")
(defun eepitch-shell  () (interactive) (eepitch-de '(shell)))
(defun eepitch-shell2 () (interactive) (eepitch-de '(shell "*shell 2*")))
(fmakunbound 'eshell/wget)

;; Eshell defs:
(defun eepitch-shell  () (interactive) (eepitch-eshell))
(defun eepitch-shell2 () (interactive) (eepitch-eshell))
(defalias 'eshell/wget 'ee-eshell/fakewget)

# (find-psne-links "http://angg.twu.net/index.html" "-nc")

rm -Rfv /tmp/esh/
mkdir   /tmp/esh/
cd      /tmp/esh/
wget http://angg.twu.net/foo
wget http://angg.twu.net/
wget http://angg.twu.net/index.html
wget http://angg.twu.net/index.html foo
wget





#####
#
# Announcing eshell/wget in emacs-devel
# 2021oct06
#
#####

# «eshell/wget-emacs-devel»  (to ".eshell/wget-emacs-devel")
# https://lists.gnu.org/archive/html/emacs-devel/2021-10/msg00491.html
# https://mail.google.com/mail/ca/u/0/#sent/KtbxLthVfqpMKGGWNMhTGnrZFJbPkVkfrg

eshell/wget: a minimalistic wget for eshell

Hi all (and John Wiegley),

I wrote a function eshell/wget - or eshell/fakewget - that uses
url-retrieve-synchronously to download files from the internets.
It is here (and eev is in ELPA):

  http://angg.twu.net/eev-current/eev-plinks.el
  http://angg.twu.net/eev-current/eev-plinks.el.html#find-urlretrieve

I don't recommend using it for big files because it doesn't output any
progress reports until it finishes. I wrote it for a workshop that
will have several participants who are Windows users who have never
used a terminal in their lives - see this thread:

  https://lists.gnu.org/archive/html/help-gnu-emacs/2021-10/msg00037.html
  https://lists.gnu.org/archive/html/help-gnu-emacs/2021-10/threads.html#00037

but I think that it may be useful in other situations, too.

I don't know how to advertise it. I looked for an index of
user-written eshell extensions and I only found this:

  https://www.emacswiki.org/emacs/EshellExtensions

and I thought that it would be a good idea to announce it here first -
and ask for advice.

  Cheers =),
    Eduardo Ochs
    http://angg.twu.net/#eev





#####
#
# fakewget corrupts files
# 2021oct07
#
#####

# «fakewget-unreliable»  (to ".fakewget-unreliable")

# (find-fline "~/2021-oficina/setup.el")
# (find-estring (ee-urlretrieve0 "http://angg.twu.net/2021-oficina/setup.el"))
# (ee-use-angg)

* (eepitch-eshell)
* (eepitch-kill)
* (eepitch-eshell)
rm -Rv /tmp/pdf/
mkdir  /tmp/pdf/
cd     /tmp/pdf/
* (ee-use-fake-wget)
wget -nc https://tannerlectures.utah.edu/_resources/documents/a-to-z/c/Coetzee99.pdf
mv Coetzee99.pdf Coetzee99-fake.pdf
* (ee-use-real-wget)
wget -nc https://tannerlectures.utah.edu/_resources/documents/a-to-z/c/Coetzee99.pdf
cmp Coetzee99.pdf Coetzee99-fake.pdf
# Coetzee99.pdf Coetzee99-fake.pdf differ: char 775, line 16





#####
#
# eshell/alias
# 2021oct08
#
#####

# «eshell/alias»  (to ".eshell/alias")
# (find-wconfig-shell-links)
# (find-wconfig-shell-links 2 "eshell/alias")
# (find-eshellnode "Aliases")
# (find-eshellnode "Invocation" "looks first for an alias")
# (find-eshellgrep "grep --color=auto -nH --null -e alias *.el")
# (find-eshellfile "em-unix.el" "aliases implemented in Lisp")
# (find-eshellfile "esh-cmd.el" "is an Eshell alias")
# (find-efunctiondescr 'eshell/alias)
# (find-efunction      'eshell/alias)
# (find-efunctiondescr 'eshell-read-aliases-list)
# (find-efunction      'eshell-read-aliases-list)
# (find-evardescr 'eshell-command-aliases-list)
# (find-evariable 'eshell-command-aliases-list)
# (find-evardescr 'eshell-aliases-file)
# (find-evariable 'eshell-aliases-file)
# (find-fline "~/.emacs.d/eshell/alias")
# (find-fline eshell-aliases-file)

(eshell/alias "wget" "~/bin/wget.exe $*")
(eshell/alias "wgety" nil)

 (eepitch-eshell)
 (eepitch-kill)
 (eepitch-eshell)
alias wget '~/bin/wget.exe $*'
cat ~/.emacs.d/eshell/alias

alias wget
cat ~/.emacs.d/eshell/alias

* (eshell/alias "wget" "~/bin/wget.exe $*")
cat ~/.emacs.d/eshell/alias

* (eshell/alias "wget" nil)
cat ~/.emacs.d/eshell/alias

# eshell-read-aliases-list: Search failed: "^alias\\s-+\\(\\S-+\\)\\s-+\\(.+\\)" [2 times]
# (find-eshellfile "em-alias.el" "^alias")





#####
#
# process-environment
# 2021oct07
#
#####

# «process-environment»  (to ".process-environment")
# (find-elnode "Index" "* process-environment:")

export

* (eepitch-eshell)
* (eepitch-kill)
* (eepitch-eshell)



#####
#
# eshell-plain-echo-behavior
# 2022jan17
#
#####

# «eshell-plain-echo-behavior»  (to ".eshell-plain-echo-behavior")
# https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-01/msg00923.html
# (find-wconfig-shell-links)
# (find-wconfig-shell-links 2 "Configure the `echo' of eshell")
# (find-windows-beginner-intro "5.6.1. Echo in Eshell")
# (find-efunctiondescr 'eshell/echo)
# (find-efunction      'eshell/echo)
# (find-evardescr 'eshell-plain-echo-behavior)
# (find-evariable 'eshell-plain-echo-behavior)

* (eepitch-eshell)
* (eepitch-kill)
* (eepitch-eshell)
echo A     >  /tmp/o
echo B     >> /tmp/o
echo -N C  >> /tmp/o
echo -N D  >> /tmp/o
echo E     >> /tmp/o
cat /tmp/o

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
echo -N foo




#####
#
# emacsconf2022
# 2022dec04
#
#####

# «emacsconf2022»  (to ".emacsconf2022")
# https://emacsconf.org/2022/talks/eshell/
# http://howardism.org/Technical/Emacs/eshell-why.html
# https://media.emacsconf.org/2022/emacsconf-2022-eshell--top-10-reasons-why-you-should-be-using-eshell--howard-abrams--main.webm
# https://media.emacsconf.org/2022/emacsconf-2022-eshell--top-10-reasons-why-you-should-be-using-eshell--howard-abrams--main.vtt
# https://media.emacsconf.org/2022/emacsconf-2022-eshell--top-10-reasons-why-you-should-be-using-eshell--howard-abrams--main--chapters.vtt
# (code-video "eshellvideo" "$S/https/media.emacsconf.org/2022/emacsconf-2022-eshell--top-10-reasons-why-you-should-be-using-eshell--howard-abrams--main.webm")
;; (find-eshellvideo)
;; (find-eshellvideo "0:00")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd /tmp/
wget -nc https://media.emacsconf.org/2022/emacsconf-2022-eshell--top-10-reasons-why-you-should-be-using-eshell--howard-abrams--main.webm
wget -nc https://media.emacsconf.org/2022/emacsconf-2022-eshell--top-10-reasons-why-you-should-be-using-eshell--howard-abrams--main.vtt
mpv --fs --osd-level=2 emacsconf-2022-eshell--top-10-reasons-why-you-should-be-using-eshell--howard-abrams--main.webm





#####
#
# reduce-latency
# 2024mar23
#
#####

# «reduce-latency»  (to ".reduce-latency")
# (find-fline "~/LOGS/2024mar23.emacs" "background-output-thread")

<xristos> absinthium: if you're piping a lot of data it can get
          bogged down, but you can patch Emacs to make it faster
<edrx> xristos: how? (patch)
<xristos> edrx:
          https://tdodge.consulting/blog/eshell/background-output-thread






<wgreenhouse> edrx: your eev talk is on my list to watch; I was sad
              to miss it live :)
<edrx> wgreenhouse: wow, thanks!!! =)
<wgreenhouse> but I like new ways to converse with emacs. I spend a
              lot of time in eshell and in some ways eev feels like
              a fellow-traveler of eshell
<edrx> I've tried to learn how to add commands to eshell years ago,
       when its documentation was very sparse, and I failed
       miserably... if anything doesn't work in eshell please tell
       me! also, I only added support for vterm just a few days
       ago...
<grym> mplsCorwin: https://imgur.com/gallery/ZiseUyx 
<edrx> the basic way of interacting with shells is shown is this
       demo here:
       https://www.youtube.com/watch?v=86yiRG8YJD0#t=15m11s
<wgreenhouse> grym: I'll stan for the first 6 Dune books being
              worth one's time
<wgreenhouse> after that it is indeed downhill
<edrx> wgreenhouse: did you modify eshell to add your own hacks?
<wgreenhouse> edrx: I mostly use it as-is, but gradually accumulate
              some aliases for things that should probably be elisp
              functions
<edrx> wgreenhouse: hmm, ok
<edrx> when I tried to hack it I wanted to make it recognize "wget"
       as special command and run a lisp function instead of
       /usr/bin/wget... but I gave up
<wgreenhouse> edrx: you would need to create an interactive
              function named eshell/wget or so, and it should be
              picked up as a command


https://github.com/manateelazycat/aweshell
https://stackoverflow.com/questions/6532998/how-to-run-multiple-shells-on-emacs

How to rename files to numbers in Eshell?
https://lists.gnu.org/archive/html/help-gnu-emacs/2021-09/msg00146.html

https://www.reddit.com/r/emacs/comments/n8n5wr/eshell_tuning_with_wellknown_keybindings/


https://ambrevar.xyz/emacs-eshell/
https://www.reddit.com/r/emacs/comments/6y3q4k/yes_eshell_is_my_main_shell/
https://news.ycombinator.com/item?id=17026490 Eshell as a main shell (ambrevar.bitbucket.io)

https://tdodge.consulting/blog/eshell/background-output-thread
https://www.reddit.com/r/emacs/comments/usghki/living_the_eshell_dream_a_reduction_in_latency/

eshell-command-result:
https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-08/msg02197.html

https://irreal.org/blog/?p=10774 Mastering Eshell - Eshell implements zsh’s argument predicates
https://www.masteringemacs.org/article/complete-guide-mastering-eshell

https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-09/msg00972.html bug#57635: 29.0.50; Look into using generator.el's CPS machinery to repl

https://olddeuteronomy.github.io/post/how-to-clear-the-eshell/
https://www.reddit.com/r/emacs/comments/zpqcac/why_use_eshell/
https://www.n16f.net/blog/clearing-the-eshell-buffer/
https://www.reddit.com/r/planetemacs/comments/zunoqh/nicolas_martyanoff_clearing_the_eshell_buffer/
https://howardism.org/Technical/Emacs/eshell-why.html

https://www.n16f.net/blog/eshell-key-bindings-and-completion/



#  Local Variables:
#  coding:               utf-8-unix
#  End: