From: Peter Stephenson <p.stephenson@samsung.com>
To: <zsh-users@zsh.org>
Subject: Re: Questions from zshexpn(1) -- Globbing
Date: Tue, 19 Nov 2019 09:35:03 +0000 [thread overview]
Message-ID: <1574156103.6021.2.camel@samsung.com> (raw)
In-Reply-To: <F1AE3C36-D2A2-4F76-9B02-E92B8AAE4FA9@easesoftware.com>
On Mon, 2019-11-18 at 18:53 -0600, Perry Smith wrote:
> The subsection is Globbing Flags within Filename Generation with both
> the b and m flags is a curious phrase:
>
>> Activate backreferences for parenthesised groups in the pattern;
>> this does not work in filename generation.
> Why does it say “this does not work in filename generation” ? Using
> their example for the m flag:
>
>> arr=(veldt jynx grimps waqf zho buck)
>> print ${arr//(#m)[aeiou]/${(U)MATCH}}
> I can change the “print” to “touch” and it touches the files and
> change it to “rm” and it removes the files.
>
> My fear here is that I’m missing something rather significant such as
> what precisely is “filename generation”
You're using that feature in variable substitution, not filename
generation.
Filename generation is specifically the use of pattern characters *, ?,
etc. to generate file names. So what this means is that the patterns
generated by that method aren't available for use in what I called
backreferences (that's a bad name, sorry: when used in regular
expressions, its standard meaning is references back to a previous part
of the same pattern, which isn't what's happening here).
So if instead of using the array you matched the files directly,
having created them:
touch $arr
print (#m)*([aeiou])*
you'd have no way of using the references generated because the file
names are substituted before the $MATCH variable would be available ---
which is probably obvious.
Of course, even if you needed to match the files on the disk first you
could still do
arr=(*)
print ${arr//(#m)[aeiou]/${(U)MATCH}}
so you've still got the ability to change the file names with variable
substitution.
So this is probably saying less than you think it is.
pws
prev parent reply other threads:[~2019-11-19 9:35 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20191119005526eucas1p2f346934679a40e37d2424b3ab6df4cbc@eucas1p2.samsung.com>
2019-11-19 0:53 ` Perry Smith
2019-11-19 9:35 ` Peter Stephenson [this message]
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=1574156103.6021.2.camel@samsung.com \
--to=p.stephenson@samsung.com \
--cc=zsh-users@zsh.org \
/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).