.Dd November 30, 2016 .Dt XE 1 .Os .Sh NAME .Nm xe .Nd run command for each line or argument .Sh SYNOPSIS .Nm .Op Fl 0FRnv .Op Fl I Ar arg .Op Fl N Ar maxargs .Op Fl j Ar maxjobs .Ar command\ ... .Nm .Op Ar flags\ ... .Fl f Ar argfile Ar command\ ... .Nm .Op Ar flags\ ... .Fl s Ar shellscript .Nm .Op Ar flags\ ... .Fl a Ar command\ ... Cm -- Ar args\ ... .Nm .Op Ar flags\ ... .Fl A Ar argsep Ar command\ ... Ar argsep Ar args\ ... .Sh DESCRIPTION .Nm is a new tool for constructing command lines from file listings or arguments, which includes the best features of .Xr xargs 1 and .Xr apply 1 . .Pp .Nm means .Dq execute for every ... . .Pp .Nm supports different ways to get arguments: .Bl -tag -width Ds .It Ar command\ ... By default, arguments are read from standard input separated by newlines. The command is constructed by taking the command line parameters, replacing .Ar arg with the read argument and then using .Xr execvp 3 to run the command. In this mode, no shell is involved and .Ar arg must appears as its own word. .Pp If no argument is passed, default is .Sq Ic printf %s\en . .It Fl f Ar argfile Like previous, but read arguments from .Ar argfile instead of standard input. .Pp This will not close standard input for execution. .It Fl s Ar shellscript In this mode, the single argument .Ar shellscript is executed using .Ic sh -c . In the script, the passed arguments can be accessed using $1, $2, ... .It Fl a Ar command\ ... Cm -- Ar args\ ... In this mode, all arguments after .Cm -- are passed as arguments to the command. .It Fl A Ar argsep Ar command\ ... Ar argsep Ar args\ ... Same as previous, but a custom argument separator .Ar argsep is used to distinguish between command and arguments. .El .Pp The options are as follows: .Bl -tag -width Ds .It Fl 0 Input filenames are separated by NUL bytes (instead of newlines, which is the default) .It Fl F Fatal: stop and exit when a command execution failed. .It Fl R Return with status 122 when no arguments have been passed (instead of 0, the default). .Nm never executes a command when no arguments are passed. .It Fl n Dry run: don't run the commands, just print them. .It Fl v Verbose: print commands to standard error before running them. .It Fl I Ar arg Replace occurrences of .Ar arg (default: .Cm {} ) in the command with the argument(s). Pass an empty .Ar arg to disable the replace function. Contrary to .Xr xargs 1 this also works when multiple arguments are to be inserted. .It Fl N Ar maxargs Pass up to .Ar maxargs arguments to each command (default: 1). .br Using .Fl N0 will pass as many arguments as possible. .It Fl j Ar maxjobs Run up to .Ar maxjobs processes concurrently. Using .Fl j0 will run as many processes as there are CPU cores running. .El .Sh ENVIRONMENT The environment variable .Ev ITER is passed to the child process and incremented on every command execution. .Sh EXIT STATUS .Nm uses the convention of GNU and OpenBSD xargs: .Bl -tag -compact -width Ds .It 0 on success .It 123 if any invocation of the command exited with status 1 to 125. .It 124 if the command exited with status 255 .It 125 if the command was killed by a signal .It 126 if the command cannot be run .It 127 if the command was not found .It 1 if some other error occurred .El .Pp Additionally, 122 is returned when .Fl R was passed and the command never was executed. .Sh SEE ALSO .Xr apply 1 , .Xr parallel 1 , .Xr xapply 1 , .Xr xargs 1 .Sh AUTHORS .An Leah Neukirchen Aq Mt leah@vuxu.org .Sh LICENSE .Nm is in the public domain. .Pp To the extent possible under law, the creator of this work has waived all copyright and related or neighboring rights to this work. .Pp .Lk http://creativecommons.org/publicdomain/zero/1.0/