From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Oliver Scholz Newsgroups: gmane.emacs.help Subject: Loops and scripting in eshell (was: Inject some eshell features into shell?) Date: Sun, 19 Oct 2003 14:31:27 +0200 Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Message-ID: References: <86fzhuqome.fsf@slowfox.dyndns.org> NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: sea.gmane.org 1066572993 22919 80.91.224.253 (19 Oct 2003 14:16:33 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sun, 19 Oct 2003 14:16:33 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sun Oct 19 16:16:31 2003 Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1ABEMA-0004FJ-00 for ; Sun, 19 Oct 2003 16:16:31 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.24) id 1ABELc-0000yR-Ar for geh-help-gnu-emacs@m.gmane.org; Sun, 19 Oct 2003 10:15:56 -0400 Original-Path: shelby.stanford.edu!newsfeed.stanford.edu!cyclone.bc.net!in.100proofnews.com!in.100proofnews.com!fu-berlin.de!uni-berlin.de!dialin-145-254-194-113.arcor-ip.NET!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 45 Original-NNTP-Posting-Host: dialin-145-254-194-113.arcor-ip.net (145.254.194.113) Original-X-Trace: news.uni-berlin.de 1066572690 25983340 145.254.194.113 (16 [87814]) X-Attribution: os X-Face: "HgH2sgK|bfH$; PiOJI6|qUCf.ve<51_Od(%ynHr?=>znn#~#oS>",F%B8&\vus),2AsPYb -n>PgddtGEn}s7kH?7kH{P_~vu?]OvVN^qD(L)>G^gDCl(U9n{:d>'DkilN!_K"eNzjrtI4Ya6; Td% IZGMbJ{lawG+'J>QXPZD&TwWU@^~A}f^zAb[Ru;CT(UA]c& User-Agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.3.50 (windows-nt) Cancel-Lock: sha1:IdxZPrBafARu0Uvbnk2QhLYY1xE= Original-Xref: shelby.stanford.edu gnu.emacs.help:117410 Original-To: help-gnu-emacs@gnu.org X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.2 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: main.gmane.org gmane.emacs.help:13341 X-Report-Spam: http://spam.gmane.org/gmane.emacs.help:13341 Kai Grossjohann writes: > Even though I now know how to do for loops in eshell, I was wondering > if the following idea might be fun to play with. Maybe someone has > already done this and would like to share? [...] Loops are the one feature that I am missing in eshell. But rather than adding the features I like to M-x shell, I'd prefer to enhance eshell. [For purely religious reasons. I am very fond of eshell and, moreover, I believe that the gods of editing will reward me for using a shell that is implemented in Elisp.] I sometimes use something like this: (loop for f in (directory-files "." nil "\\w") do (rename-file f (concat f "x"))) on the eshell command line. But for the simple stuff I need, I'd prefer the sh syntax: for i in `ls` do ... I know how to write a simple interpreter, but unfortunately I am not familiar with eshell's internals. And I am actually a dummy as far as shell scripting is concerned (I tend to use Elisp for everything). And I don't want to spend much time on it right now. So my questions are: 1. Is it the Right Way to get this by `defun'ing a function `eshell/for' which does the necessary parsing? The backquote stuff would probably be a problem, but I am not sure whether eshell actually provides a way to deal with it. Maybe I could take care of it myself. Thoughts? 2. Where can I get (comprehensive) documentation for the sh (bourne?) command syntax? I think, if it is feasible, I could as well make it decent enough to be worth a patch sent to the eshell maintainer. Oliver -- 28 Vendémiaire an 212 de la Révolution Liberté, Egalité, Fraternité!