zsh-users
 help / color / mirror / code / Atom feed
* Questions from zshexpn(1) -- Globbing
@ 2019-11-19  0:53 ` Perry Smith
  2019-11-19  9:35   ` Peter Stephenson
  0 siblings, 1 reply; 2+ messages in thread
From: Perry Smith @ 2019-11-19  0:53 UTC (permalink / raw)
  To: Zsh Users


[-- Attachment #1.1: Type: text/plain, Size: 902 bytes --]

Again, trying to read through and understand zshexpn…

https://www.mankier.com/1/zshexpn#Filename_Generation-Globbing_Flags <https://www.mankier.com/1/zshexpn#Filename_Generation-Globbing_Flags>

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”


[-- Attachment #1.2: Type: text/html, Size: 1683 bytes --]

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 2966 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Questions from zshexpn(1) -- Globbing
  2019-11-19  0:53 ` Questions from zshexpn(1) -- Globbing Perry Smith
@ 2019-11-19  9:35   ` Peter Stephenson
  0 siblings, 0 replies; 2+ messages in thread
From: Peter Stephenson @ 2019-11-19  9:35 UTC (permalink / raw)
  To: zsh-users

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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-11-19  9:35 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20191119005526eucas1p2f346934679a40e37d2424b3ab6df4cbc@eucas1p2.samsung.com>
2019-11-19  0:53 ` Questions from zshexpn(1) -- Globbing Perry Smith
2019-11-19  9:35   ` Peter Stephenson

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).