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

Re: [PATCH] respect nullglob given multios



On Thu, 2019-10-10 at 16:40 +0000, Peter Stephenson wrote:
> On Thu, 2019-10-10 at 01:18 +0000, Joe Rice wrote:
> > This patch makes multios behave less surprisingly with nullglob.
> > 
> > Currently, multios throws a file not found error when a nullglob is
> > given. This patch inserts /dev/null into the redirection list when
> > the
> > glob returns empty with no errors.
> > 
> > Is this a behavior that would interest anyone else? I find myself
> > using the `cat /dev/null *(N.)` idiom quite a bit and I thought the
> > behavior made sense for the null case in multios.
> 
> This does seem a logical effect, though it ought to be documented.

I am not sure if it's that logical.
What about if the pipeline on left of the redirection is something
expensive?
I'd rather have the command fail than starting a long-running job whose
output will be lost.

Also, conceptually, this introduces a difference between the behaviors
of an explicitly empty redirection and an empty redirection after
filename expansion.

Compare:
   % zsh -f
   % echo $ZSH_VERSION
   5.7.1
   % print nosuchfileprefix*(N)

   % print

   % print > nosuchfileprefix*(N) # Implicitly sends to /dev/null
   % print > 
   zsh: parse error near `\n'
   % 

I'd argue that the behavior should be the same: both should send to
/dev/null or not.

Incidentally, and as a completely separate issue, on an unpatched 5.7.1
zsh (Fedora 30 stock package), the command above succeeds and creates a
file:
   % print > nosuchfileprefix*(N)
   % ls nosuchfileprefix*(N)
   'nosuchfileprefix'$'\207\210''N'$'\212'

Is that expected?

Phil.



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