Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: glob expansion



Michael Wild <themiwi@xxxxxxxxx> writes:

> On 28Apr, 2008, at 10:26, Lloyd Zusman wrote:
>
>> Lloyd Zusman <ljz@xxxxxxxxxx> writes:
>>
>>> Michael Wild <themiwi@xxxxxxxxx> writes:
>>>
>>>> [ ... ]
>>>>
>>>> find /usr/lib -type f -name *.so
>>>>
>>>> [ ... ]
>>>>
>>>> So my question: Is there any way to change the expansion behavior of
>>>> ZSH? The man-pages and the FAQ didn't help me, nor did google. But
>>>> then, I'm quite sure I didn't use the appropriate search terms...
>>>
>>> Try this:
>>>
>>>  alias find='noglob /usr/bin/find'
>>>
>>> Then, issue the command above.  This works for specific commands.   
>>> Also,
>>> look at 'setopt nonomatch' if you want this behavior all the time.
>>
>> Of course, the 'nonomatch' option doesn't work quite the same way as  
>> the
>> 'noglob' prefix.  It only suppresses the error and returns the  
>> wildcard
>> if the glob doesn't match -- it expands it if it does.  The 'noglob'
>> prefix ensures that no glob expansion will be performed in any case.
>>
>> I shouldn't post here before my morning coffee.
>
> ;-) I sure got the difference, and nonoglob exactly does what I want.  
> Expansion if possible, otherwise pass it on without erroring out.

Well, I'm glad that I accidentally described what you're looking
for. :)

Just keep in mind that nonomatch won't do what you seem to want in your
'find' example.  Suppose the current working directory contains the
following files:

   aaa bbb ccc.so ddd.so eee.so subdir

... where 'subdir' is the top of a directory tree containing many other
*.so files.

If you have 'setopt nonomatch' and you issue the following command ...

  find . -type f -name *.so

... that command will be expanded like this before it is executed:

  find . -type f -name ccc.so ddd.so eee.so

It will then not give you what you're looking for.



-- 
 Lloyd Zusman
 ljz@xxxxxxxxxx
 God bless you.



Messages sorted by: Reverse Date, Date, Thread, Author