From: Jim Porter Date: Sun, 9 Jul 2023 19:04:01 +0000 (-0700) Subject: Add documentation about remote access in Eshell X-Git-Tag: emacs-29.1-rc1~42 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3a70354579819f883032fbf862d95f9f17649719;p=emacs.git Add documentation about remote access in Eshell Do not merge to master. This is a backport of 438921161ac. * doc/misc/eshell.texi (Invocation): Mention the '*' prefix. (Remote Access): New section... (Commands): ... link to it. --- diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi index 3d859124b50..e05c1fc5baa 100644 --- a/doc/misc/eshell.texi +++ b/doc/misc/eshell.texi @@ -207,6 +207,7 @@ that will be invoked, type this as the Eshell prompt: * Built-ins:: * Variables:: * Aliases:: +* Remote Access:: * History:: * Completion:: * Control Flow:: @@ -266,7 +267,10 @@ As an ordinary Lisp function @vindex eshell-prefer-lisp-functions If you would prefer to use ordinary Lisp functions over external programs, set the option @code{eshell-prefer-lisp-functions} to -@code{t}. This will swap the lookup order of the last two items. +@code{t}. This will swap the lookup order of the last two items. You +can also force Eshell to look for a command as an external program by +prefixing its name with @kbd{*}, like @code{*@var{command}} +(@pxref{Built-ins}). You can also group command forms together into a subcommand with curly braces (@code{@{@}}). This lets you use the output of a subcommand as @@ -1048,6 +1052,33 @@ pass all arguments along. More selective use of arguments via @kbd{alias mcd 'mkdir $1 && cd $1'} would cause @kbd{mcd foo} to create and switch to a directory called @samp{foo}. +@end table + +@node Remote Access +@section Remote Access +@cmindex remote access + +Since Eshell uses Emacs facilities for most of its functionality, you +can access remote hosts transparently. To connect to a remote host, +simply @code{cd} into it: + +@example +~ $ cd /ssh:user@@remote: +/ssh:user@@remote:~ $ +@end example + +Additionally, built-in Eshell commands (@pxref{Built-ins}) and +ordinary Lisp functions accept remote file names, so you can access +them even without explicitly connecting first. For example, to print +the contents of a remote file, you could type @samp{cat +/ssh:user@@remote:~/output.log}. However, this means that when using +built-in commands or Lisp functions from a remote directory, you must +be careful about specifying absolute file names: @samp{cat +/var/output.log} will always print the contents of your @emph{local} +@file{/var/output.log}, even from a remote directory. If you find +this behavior annoying, you can enable the optional electric forward +slash module (@pxref{Electric forward slash}). + @node History @section History @cmindex history