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

Re: zargs doesn't work reliably

On Aug 17,  3:59pm, Mikael Magnusson wrote:
} Usage: zargs [options --] [input-args] [-- command [initial-args]]
} % touch -- -- -+

There are approximately eleventeen zillion unix/linux commands that
break given those file names, including rm, ls, and cp, so I'm not
going to get particularly worked up about zargs behaving similarly.
However, if you'd looked just a little further, you'd find that in
fact zargs already has a solution for this problem.  There is even
an example in the manual:

     In the event that the string `--' is or may be an INPUT, the -e
     option may be used to change the end-of-inputs marker.  Note that
     this does _not_ change the end-of-options marker.  For example, to
     use `..' as the marker:

          zargs -e.. -- **/*(.) .. ls -l

     This is a good choice in that example because no plain file can be
     named `..', but the best end-marker depends on the circumstances.

(End manual page example, begin new one.)  You can even do:

          zargs -e$'\0' -- * $'\0' ls -d

unless you somehow have a file named (the nul byte).

} since input-args is the only part you do not control

The only part who does not control?

} it should come last, like so
} Usage: zargs [options --] [command [initial-args]] -- [input-args]

I think the designers of the xargs command, after which zargs is closely
modeled, would disagree with you.  See "man xargs".

} A problem is how to give -- as initial-args then

Precisely.  Another problem is that the command and initial-args may be
omitted, but the input-args may not be.

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