supuner
(SUPpress UNless ERror) executes a command and manipulates
its stderr and stdout. By default, it captures both stderr and stdout and only
outputs their combined value to stdout if the command fails.
supuner is useful for chattycommands whose output is only relevant if the command fails.
-e
sends combined stderr/stdout output to stdout.
-e
is specified without -o
, since the
previous behaviour of -e
without -o
had no use (and
mildly surprising semantics).
basename
program rather than a hand-rolled alternative.
supuner [-e] [-o <filename>] <command>Options:
-e |
If -o is specified, then as well as sending output to a file, echo stdout and stderr combined to stdout |
-o <filename> |
Send stdout and stderr to file. |
supuner
exits with the exit code of command
.
Here are examples of the basic styles of use of supuner
:
$ supuner ls /bin/sh $ supuner ls /bin/sh /doesntexist ls: /doesntexist: such file or directory /bin/sh $ supuner -o /tmp/o ls /bin/sh /doesntexist $ echo $? 1 $ cat /tmp/o ls: /doesntexist: such file or directory /bin/sh $ supuner -e -o /tmp/o ls /bin/sh /doesntexist ls: /doesntexist: such file or directory /bin/sh $ echo $? 1 $ cat /tmp/o ls: /doesntexist: such file or directory /bin/shUsing the fact that supuner exits with the exit code of command, one can use the
||
operator to perform actions on the
combined stdout / stderr output, for example:
$ supuner -o /tmp/o ls /bin/sh /doesntexist \ || mail -s "Error from ls" somebody@example.com < /tmp/o