From: Bart Schaefer <schaefer@brasslantern.com>
To: Zsh-users List <zsh-users@sunsite.dk>
Subject: Re: Tip of the day: previous command output
Date: Thu, 19 Aug 2004 10:16:10 -0700 (PDT) [thread overview]
Message-ID: <Pine.LNX.4.61.0408190956440.9464@toltec.zanshin.com> (raw)
In-Reply-To: <20040819164250.GA21575@spiegl.de>
On Thu, 19 Aug 2004, Andy Spiegl wrote:
> So I modified Barts "keep" to use
> kept=$($*)
Unless you also dropped the alias that prefixes keep with noglob, you
still need $~*, and to make it an array you probably want
kept=( $($~*) )
> So that I can do
> keep locate -i pictures | grep -i thursday | grep -i png
I don't know whether you intended this, but [with your original edit]
that's equivalent to
kept=$(locate -i pictures)
print -Rc - $kept | grep -i thursday | grep -i png
whereas I would guess that, rather, you meant
kept=( $(locate -i pictures | grep -i thursday | grep -i png) )
There's no provision -- except via a zmodload'd module -- for creating a
user-defined "precommand modifier" like (say) "time" or "coproc" that
syntatically consumes an entire pipeline. You'd have to use [inside
"keep"]
kept=( $(eval $*) )
[in this case NOT $~*] and write
keep locate -i pictures \| grep -i thursday \| grep -i png
An alternative is to write "keep" this way:
keep() {
kept=()
kept=( $~* )
if [[ ! -t 0 ]]; then
while read line; do
kept+=( $line )
done
fi
print -Rc - $kept
}
Then you can write
locate -i pictures | grep -i thursday | grep -i png | keep
and thanks to the magic of zsh running the last command of a pipe in the
current shell when that command is a function or builtin, you get what you
want in $kept.
next prev parent reply other threads:[~2004-08-19 17:19 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-19 8:58 Jesper Holmberg
2004-08-19 15:20 ` Bart Schaefer
2004-08-19 16:42 ` Andy Spiegl
2004-08-19 17:16 ` Bart Schaefer [this message]
2004-08-20 9:30 ` Andy Spiegl
2004-08-20 11:13 ` Vincent Lefevre
2004-08-20 12:12 ` Andy Spiegl
2004-08-20 14:50 ` Vincent Lefevre
2004-08-21 4:25 ` Bart Schaefer
2004-08-21 5:58 ` Bart Schaefer
2004-08-21 17:06 ` Bart Schaefer
2004-08-22 20:58 ` Vincent Lefevre
2004-08-23 1:10 ` Bart Schaefer
2004-08-23 13:51 ` Vincent Lefevre
2004-08-22 21:21 ` Vincent Lefevre
2004-08-22 23:03 ` Bart Schaefer
2004-08-23 13:00 ` Vincent Lefevre
2004-08-23 15:21 ` Bart Schaefer
2004-08-23 19:14 ` Vincent Lefevre
2004-08-26 23:16 ` Andy Spiegl
2004-08-27 0:43 ` Bart Schaefer
2004-08-27 10:21 ` Andy Spiegl
2004-08-31 15:03 ` zzapper
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=Pine.LNX.4.61.0408190956440.9464@toltec.zanshin.com \
--to=schaefer@brasslantern.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).