zsh-users
 help / color / mirror / code / Atom feed
From: Peter Stephenson <p.w.stephenson@ntlworld.com>
To: zsh-users@sunsite.dk (Zsh users list)
Subject: Re: print -s and History Expansion
Date: Tue, 02 May 2006 22:47:32 +0100	[thread overview]
Message-ID: <200605022147.k42LlWC9003204@pwslaptop.csr.com> (raw)
In-Reply-To: Your message of "Tue, 02 May 2006 15:10:22 EDT." <20060502191022.GA30399@namib.cs.utk.edu>

Chris Johnson wrote:
> Multiword lines issued to history with print -s don't appear to be
> considered as multiple words, as evidenced by the unexpected history
> expansion found in the following interaction:
> 
> [cjohnson@sissy] ~ S1:  print -s 'echo a b c'
> [cjohnson@sissy] ~ S1: echo !!:1
> zsh: no such word in event

You'll kick yourself when I tell you... to get the line entered in the
history as multiple words, pass multiple words to echo:

% print -s echo a b c
% echo !!:1
a

No quotes.


You may have come across this obliquely, because the line you were
saving came from a scalar variable.  In that case, the best thing to do
is probably to zplit it.  If you've got histverify set it looks like
this (else you don't see the final line, just the result of it):

% var='echo one "two three" "four five"'
% print -s ${(z)var}
% print !!:2
% print "two three"


A more complicated case is where you already have a set of arguments,
but they aren't yet quoted, for example:

% array=(echo one 'two three' 'four five')

Here, the quotes have already been "used up" in generating the array.
You can requote the arguments to get all the parts of a command line
like this (again with histverify):

% print -s ${(qq)array}
% echo !!:$
% print 'four five'

That came up with single quotes; (q) would have used backslashes.


In other words, there are plenty of ways of doing it, it depends what
you're starting with.  That should give you enough to be getting on with.

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


  reply	other threads:[~2006-05-02 21:47 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-02 19:10 Chris Johnson
2006-05-02 21:47 ` Peter Stephenson [this message]
2006-05-04 19:06   ` Chris Johnson
2006-05-05  8:55     ` Peter Stephenson
2006-05-05 18:05       ` Chris Johnson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200605022147.k42LlWC9003204@pwslaptop.csr.com \
    --to=p.w.stephenson@ntlworld.com \
    --cc=zsh-users@sunsite.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).