mirror of
git://git.sv.gnu.org/findutils.git
synced 2026-01-29 20:58:59 +01:00
248 lines
8.8 KiB
Groff
248 lines
8.8 KiB
Groff
.TH XARGS 1 \" -*- nroff -*-
|
|
.SH NAME
|
|
xargs \- build and execute command lines from standard input
|
|
.SH SYNOPSIS
|
|
.B xargs
|
|
[\-0prtx] [\-E[eof-str]] [\-e[eof-str]] [\-\-eof[=eof-str]] [\-\-null]
|
|
[\-I[replace-str]] [\-i[replace-str]] [\-\-replace[=replace-str]]
|
|
[\-l[max-lines]] [\-L[max-lines]] [\-\-max\-lines[=max-lines]] [\-n max-args] [\-\-max\-args=max-args]
|
|
[\-s max-chars] [\-\-max\-chars=max-chars] [\-P max-procs] [\-\-max\-procs=max-procs]
|
|
[\-\-interactive] [\-\-verbose] [\-\-exit]
|
|
[\-\-no\-run\-if\-empty] [\-\-arg\-file=file] [\-\-version] [\-\-help]
|
|
[command [initial-arguments]]
|
|
.SH DESCRIPTION
|
|
This manual page
|
|
documents the GNU version of
|
|
.BR xargs .
|
|
.B xargs
|
|
reads items from the standard input, delimited by blanks (which can be
|
|
protected with double or single quotes or a backslash) or newlines,
|
|
and executes the
|
|
.I command
|
|
(default is /bin/echo) one or more times with any
|
|
.I initial-arguments
|
|
followed by items read from standard input. Blank lines on the
|
|
standard input are ignored.
|
|
.P
|
|
Because Unix filenames can contain blanks and newlines, this default
|
|
behaviour is often problematic; filenames containing blanks
|
|
and/or newlines are incorrectly processed by
|
|
.BR xargs .
|
|
In these situations it is better to use the `\-0' option, which
|
|
prevents such problems. When using this option you will need to
|
|
ensure that the program which produces the input for
|
|
.B xargs
|
|
also uses a null character as a separator. If that program is
|
|
GNU
|
|
.B find
|
|
for example, the `\-print0' option does this for you.
|
|
.P
|
|
If any invocation of the command exits with a status of 255,
|
|
.B xargs
|
|
will stop immediately without reading any further input. An error
|
|
message is issued on stderr when this happens.
|
|
.SS OPTIONS
|
|
.TP
|
|
.I "\-\-arg\-file=file, \-a file"
|
|
Read items from
|
|
.I file
|
|
instead of standard input. If you use this option, stdin remains
|
|
unchanged when commands are run. Otherwise, stdin is redirected
|
|
from
|
|
.IR /dev/null .
|
|
|
|
.TP
|
|
.I "\-\-null, \-0"
|
|
Input items 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 input items might
|
|
contain white space, quote marks, or backslashes. The GNU find
|
|
\-print0 option produces input suitable for this mode.
|
|
.TP
|
|
.I "\-\-eof[=eof-str], \-E[eof-str]"
|
|
Set the end of file string to \fIeof-str\fR. If the end of file
|
|
string occurs as a line of input, the rest of the input is ignored.
|
|
If \fIeof-str\fR is omitted, there is no end of file string. If this
|
|
option is not given, no end of file string is used.
|
|
.TP
|
|
.I "\-e[eof-str]"
|
|
This option is a synonym for the `\-E' option. Use `\-E' instead,
|
|
because it is POSIX compliant while this option is not.
|
|
.TP
|
|
.I "\-\-help"
|
|
Print a summary of the options to
|
|
.B xargs
|
|
and exit.
|
|
.TP
|
|
.I "\-\-replace[=replace-str], \-i[replace-str]"
|
|
Replace occurences of \fIreplace-str\fR in the initial-arguments with
|
|
names read from standard input.
|
|
Also, unquoted blanks do not terminate input items; instead the
|
|
separator is the newline character.
|
|
If \fIreplace-str\fR is omitted, it
|
|
defaults to "{}" (like for `find \-exec'). Implies \fI\-x\fP and
|
|
\fI\-l 1\fP.
|
|
.TP
|
|
.I "\-\-max\-lines[=max-lines], \-L[max-lines]"
|
|
Use at most \fImax-lines\fR nonblank input lines per command line;
|
|
\fImax-lines\fR defaults to 1 if omitted. Trailing blanks cause an
|
|
input line to be logically continued on the next input line. Implies
|
|
\fI\-x\fR.
|
|
.TP
|
|
.I "\-l[max-lines]"
|
|
Deprecated; non-POSIX-compliant synonym for the
|
|
.I "\-L"
|
|
option.
|
|
.TP
|
|
.I "\-\-max\-args=max-args, \-n max-args"
|
|
Use at most \fImax-args\fR arguments per command line. Fewer than
|
|
\fImax-args\fR arguments will be used if the size (see the \-s option)
|
|
is exceeded, unless the \-x option is given, in which case \fBxargs\fR
|
|
will exit.
|
|
.TP
|
|
.I "\-\-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 \fI\-t\fR.
|
|
.TP
|
|
.I "\-\-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.
|
|
This option is a GNU extension.
|
|
.TP
|
|
.I "\-\-max\-chars=max-chars, \-s max-chars"
|
|
Use at most \fImax-chars\fR characters per command line, including the
|
|
command and initial-arguments and the terminating nulls at the ends of
|
|
the argument strings. The default is 131072 characters, not including
|
|
the size of the environment variables (which are provided for
|
|
separately so that it doesn't matter if your environment variables
|
|
take up more than 131072 bytes). The operating system places limits
|
|
on the values that you can usefully specify, and if you exceed these a
|
|
warning message is printed and the value actually used is set to the
|
|
appropriate upper or lower limit.
|
|
.TP
|
|
.I "\-\-verbose, \-t"
|
|
Print the command line on the standard error output before executing
|
|
it.
|
|
.TP
|
|
.I "\-\-version"
|
|
Print the version number of
|
|
.B xargs
|
|
and exit.
|
|
.TP
|
|
.I "\-\-exit, \-x"
|
|
Exit if the size (see the \fI\-s\fR option) is exceeded.
|
|
.TP
|
|
.I "\-\-max\-procs=max-procs, \-P max-procs"
|
|
Run up to \fImax-procs\fR processes at a time; the default is 1. If
|
|
\fImax-procs\fR is 0, \fBxargs\fR will run as many processes as
|
|
possible at a time. Use the \fI\-n\fR option with \fI\-P\fR;
|
|
otherwise chances are that only one exec will be done.
|
|
.SH "EXAMPLES"
|
|
.nf
|
|
.B find /tmp \-name core \-type f \-print | xargs /bin/rm \-f
|
|
|
|
.fi
|
|
Find files named
|
|
.B core
|
|
in or below the directory
|
|
.B /tmp
|
|
and delete them. Note that this will work incorrectly if there are
|
|
any filenames containing newlines or spaces.
|
|
.P
|
|
.B find /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f
|
|
|
|
.fi
|
|
Find files named
|
|
.B core
|
|
in or below the directory
|
|
.B /tmp
|
|
and delete them, processing filenames in such a way that file or
|
|
directory names containing spaces or newlines are correctly handled.
|
|
.P
|
|
.nf
|
|
.B cut \-d: \-f1 < /etc/passwd | sort | xargs echo
|
|
|
|
.fi
|
|
Generates a compact listing of all the users on the system.
|
|
.SH "EXIT STATUS"
|
|
.B xargs
|
|
exits with the following status:
|
|
.nf
|
|
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.
|
|
.fi
|
|
.P
|
|
Exit codes greater than 128 are used by the shell to indicate that
|
|
a program died due to a fatal signal.
|
|
.SH "STANDARDS CONFORMANCE"
|
|
As of GNU xargs version 4.2.9, the default behaviour of
|
|
.B xargs
|
|
is not to have a logical end-of-file marker. POSIX (IEEE Std 1003.1,
|
|
2004 Edition) allows this.
|
|
|
|
.SH "SEE ALSO"
|
|
\fBfind\fP(1), \fBlocate\fP(1), \fBlocatedb\fP(5), \fBupdatedb\fP(1),
|
|
\fBFinding Files\fP (on-line in Info, or printed)
|
|
.SH "BUGS"
|
|
.P
|
|
It is not possible for
|
|
.B xargs
|
|
to be used securely, since there will always be a time gap between the
|
|
production of the list of input files and their use in the commands
|
|
that
|
|
.B xargs
|
|
issues. If other users have access to the system, they can manipulate
|
|
the filesystem during this time window to force the action of the
|
|
commands
|
|
.B xargs
|
|
runs to apply to files that you didn't intend. For a more detailed
|
|
discussion of this and related problems, please refer to the
|
|
``Security Considerations'' chapter in the findutils Texinfo
|
|
documentation. The -execdir option of
|
|
.B find
|
|
can often be used as a more secure alternative.
|
|
|
|
When you use the \-i option, each line read from the input is buffered
|
|
internally. This means that there is an upper limit on the length
|
|
of input line that
|
|
.B xargs
|
|
will accept when used with the \-i option. To work around this
|
|
limitation, you can use the \-s option to increase the amount of
|
|
buffer space that
|
|
.B xargs
|
|
uses, and you can also use an extra invocation of
|
|
.B xargs
|
|
to ensure that very long lines do not occur.
|
|
For example:
|
|
.P
|
|
.B somecommand | xargs \-s 50000 echo | xargs \-i \-s 100000 rm '{}'
|
|
.P
|
|
Here, the first invocation of
|
|
.B xargs
|
|
has no input line length limit
|
|
because it doesn't use the \-i option. The second invocation of
|
|
.B xargs
|
|
does have such a limit, but we have ensured that the it never encounters
|
|
a line which is longer than it can handle. This is not an ideal
|
|
solution. Instead, the \-i option should not impose a line length
|
|
limit, which is why this discussion appears in the BUGS section.
|
|
The problem doesn't occur with the output of
|
|
.BR find (1)
|
|
because it emits just one filename per line.
|
|
.P
|
|
The best way to report a bug is to use the form at
|
|
http://savannah.gnu.org/bugs/?group=findutils.
|
|
The reason for this is that you will then be able to track progress in
|
|
fixing the problem. Other comments about \fBxargs\fP(1) and about
|
|
the findutils package in general can be sent to the
|
|
.I bug\-findutils
|
|
mailing list. To join the list, send email to
|
|
.IR bug\-findutils\-request@gnu.org .
|