Re: no xargs -i flag

2002-09-27 Thread Oliver Fromme

Peter Leftwich [EMAIL PROTECTED] wrote:
  I'm surprised that xargs has no flag for interactive mode (-i) so that the
  command line will be echoed to the terminal asking [y/n/!] where y means yes
  proceed and n means no stop now and ! would mean answer y to all remaining
  promptings.

Normally there is not much use for such an option, that's
why nobody has bothered to implement it.  (Well, there is
-t, but it only echoes the command line, but doesn't ask
for confitmation.)

Typically, xargs is used when there are a lot of files (or
an unknown number of files, which could also mean a lot).
So the command line echoed at you would probably be larger
than your terminal window.

When there are only a small number of files, there is not
much of a point in using xargs.

  If the command passed to xargs *includes* something like mv -i will xargs
  run interactively?

No, but mv will.  :-)

  Sort of unrelated, but what if you wanted to pass something like `grep -i
  something each_xarged_file | mail -s output $USER` as opposed to just `grep
  -i something each_xarged_file`?

No special handling necessary, it'll work just fine.

  That is, how do you let xargs know where
  to put the filename, if not at the end of the command line?

xargs doesn't see your command line at all.  It only sees
the arguments passed to it by your shell.  For example:

$ find /foo -type f | xargs grep whatever | mail -s bar $USER

In this case, your shell creates three processes which are
connected by pipes (find, xargs and mail).  The arguments
passed to the xargs process are grep and whatever.  The
xargs process doesn't see anything else.  It doesn't even
know that it's piping into another process (which happens
to be mail).

xargs just takes its arguments and (after processing any
options) executes it as a command.  The standard ouput of
that command (grep) is passed to the standard output of
the xargs process itself.

  It isn't clear
  from the manpage or examples I've browsed.  Thanks.

The problem is that there are several different mechanisms
involved.  The handling of pipes, processes and the parsing
of command line arguments is explained in the manual page
of your shell, for example the sh(1) manpage.  The way
xargs constructs commands from its arguments and stdin is
detailed in the xargs(1) manpage.  You have to put it all
together in order to understand how it works.

Regards
   Oliver

-- 
Oliver Fromme, secnetix GmbH  Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.

All that we see or seem is just a dream within a dream (E. A. Poe)

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-questions in the body of the message



Re: no xargs -i flag

2002-09-24 Thread Giorgos Keramidas

On 2002-09-24 18:48, Peter Leftwich [EMAIL PROTECTED] wrote:
 I'm surprised that xargs has no flag for interactive mode (-i) so that the
 command line will be echoed to the terminal asking [y/n/!] where y means yes
 proceed and n means no stop now and ! would mean answer y to all remaining
 promptings.

So, what would you do when a thousand files are piped to xargs? :)
Write 'yes' a thousand times?

Giorgos.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-questions in the body of the message