Content-type: text/html Manpage of XAGS


Section: Misc. Reference Manual Pages (1L)
Index Return to Main Contents


xags - build and execute command lines from standard input  


xags [-0prtx] [-e[eof-str]] [-i[replace-str]] [-l[max-lines]] [-n max-args] [-s max-chars] [-P max-procs] [--null] [--eof[=eof-str]] [--replace[=replace-str]] [--max-lines[=max-lines]] [--interactive] [--max-chars=max-chars] [--verbose] [--exit] [--max-procs=max-procs] [--max-args=max-args] [--no-run-if-empty] [--version] [--help] [-L] [--nosplit-lines] [command [initial-arguments]]  


This manual page documents the perl version of xags which is based off the GNU version of xargs. xags reads arguments from the standard input, delimited by blanks (which can be protected with double or single quotes or a backslash) or newlines, and executes the command (default is /bin/echo) one or more times with any initial-arguments followed by arguments read from standard input. Blank lines on the standard input are ignored. xags exits with the following status:
0 if it succeeds
123 if any invocation of the command exited with status 1-125
124 if the command exited with status 255
125 if the command is killed by a signal
126 if the command cannot be run
127 if the command is not found
1 if some other error occurred.


--null, -0
Input filenames are terminated by a null character instead of by whitespace, and the quotes and backslash are not special (every character is taken literally). Disables the end of file string, which is treated like any other argument. Useful when arguments might contain white space, quote marks, or backslashes. The GNU find -print0 option produces input suitable for this mode.
--eof[=eof-str], -e[eof-str]
Set the end of file string to eof-str. If the end of file string occurs as a line of input, the rest of the input is ignored. If eof-str is omitted, there is no end of file string. If this option is not given, the end of file string defaults to "_".
Print a summary of the options to xags and exit.
--replace[=replace-str], -i[replace-str]
Replace occurences of replace-str in the initial arguments with names read from standard input. Also, unquoted blanks do not terminate arguments. If replace-str is omitted, it defaults to "{}" (like for `find -exec'). Implies -x and -l 1.
--max-lines[=max-lines], -l[max-lines]
Use at most max-lines nonblank input lines per command line; max-lines defaults to 1 if omitted. Trailing blanks cause an input line to be logically continued on the next input line. Implies -x.
--max-args=max-args, -n max-args
Use at most max-args arguments per command line. Fewer than max-args arguments will be used if the size (see the -s option) is exceeded, unless the -x option is given, in which case xags will exit.
--interactive, -p
Prompt the user about whether to run each command line and read a line from the terminal. Only run the command line if the response starts with `y' or `Y'. Implies -t.
--no-run-if-empty, -r
If the standard input does not contain any nonblanks, do not run the command. Normally, the command is run once even if there is no input.
--max-chars=max-chars, -s max-chars
Use at most max-chars characters per command line, including the command and initial arguments and the terminating nulls at the ends of the argument strings. The default is as large as possible, up to 20k characters.
--verbose, -t
Print the command line on the standard error output before executing it.
Print the version number of xags and exit.
--exit, -x
Exit if the size (see the -s option) is exceeded.
--max-procs=max-procs, -P max-procs
Run up to max-procs processes at a time; the default is 1. If max-procs is 0, xags will run as many processes as possible at a time. Use the -n option with -P; otherwise chances are that only one exec will be done.


This program is a black-box rewrite of GNU xargs version 4.1 (meaning that it was based off of extensive testing of GNU xargs output based on various input, and not through looking at any of the xargs internals or source code). As an aside, this means this code is not under the GPL (see LICENSE below). All the differences can be seen if you specify the --version option:
 0)  --version is different, obviously
 1)  Can properly shell quote input lines
 2)  Can handle "-i -n"
 3)  Additional option:  -L/--nosplit-lines
 4)  --max-chars is only bounded by memory (instead
     of 20k) if not set
 5)  Properly exits if size exceeded only when
     --exit specified
 6)  Poorly distinguishes between exit 126 and exit 127
 7)  Starts commands as soon as it's read enough input (as opposed to
     getting all of stdin first)
 8)  Ordering of options doesn't matter



This code is free for non-commercial use. See the full license at  


--nosplit-lines, -L
Treat each line as an single string which gets passed as a complete argument to the command. As an example, this will make a big difference for:
find . | xags -L chmod +r
if any files have spaces in them. As an example, assume we have the files "a," "b," and "file with space." Without the -L option, xags will simply try to run "chmod -r a b file with space" which will try to chmod 5 files, instead of 3. We want to send "file with space" as one argument, and -L will do that.



xargs(1L), perl(1), find(1L), locate(1L), locatedb(5L), updatedb(1) Finding Files (on-line in Info, or printed)




This document was created by man2html, using the manual pages.
Time: 12:20:48 GMT, July 09, 2001