Adverbio

Adverbial commands are shell commands which re-exec their command line directly, usually after making some change to their environment.

Well-known examples are nice and nohup. Sometimes however the change the command makes interacts inconveniently with the shell's I/O redirection: if the change could affect the effect of such redirections, then you might want them to take place after the change rather than before. adverbio provides a convenient way to achieve this.

Consider, for example, the command really, which executes its arguments as root. If you want to redirect the output of such a command then the naive approach:

really ls > /root/file

does not work - the mortal user's shell tries to perform the redirection, and this fails. It is necessary to reinvoke the shell to get it to perform the redirection at the right point:

really sh -c 'ls > /root/file'

However this is unacceptable for general use, as it requires shell commands to be shell-quoted - and so any argument strings must be quoted twice! This is messy and error prone. (More about shell quoting.)

With adverbio the above becomes:

really adverbio -o /root/file -- ls

which is slightly verbose, but requires no quoting. In this example, the quoting required would be quite simple; this might not be the case in more complex examples.

See the rjkshelltools home page for download details. It also has a more theoretical discussion of why adverbio should exist.

Copyright

Adverbio is Copyright © 2001 Richard Kettlewell.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

RJK | Contents