This package consists of a number of utility commands I've written for UNIX systems.

All the programs come with documentation in the form of a man page, included in the source package. They are only tested under Debian GNU/Linux but should port relatively easily to other systems.

Source Code

Source code in git.

Commands That Execute Commands

(or, "what's the point of adverbio?")

Many of the programs currently in rjkshelltools have the common feature that they execute other commands. They don't use the shell for this, but instead execute the command directly. Other examples of commands that have this property would be nice, nohup and really.

This has the disadvantage that you can't use the features of the shell in the executed commands without explicitly invoking it, but the advantage that the shell's quoting rules don't get applied twice to the command (of course, if you do explicitly use the shell, then this advantage evaporates). Since the shell's quoting rules are really horrible, I consider this a particularly good property, and one worth going to some effort to keep.

The adverbio command is intended precisely to work around the fact that commands that execute commands without going via the shell have no convenient way to perform I/O redirection in the modified environment.

In the case of e.g. nice this is irrelevant; nobody really cares if the redirection happens with a different nice value or not. But in the case of a command such as really, where the meaning and availability of certain redirection operations is changed in the environment of the executed command, or in the case of alarm, where you might want to time out blocking redirections, this is potentially more of a nuisance.

Why the odd name? Commands that just execute the command they receive as an argument after making some change to their environment are sometimes referred to as "adverbial" commands, by analogy with the way that adverbs modify the verbs that they apply to.


rjkshelltools is Copyright © 2001-2015 Richard Kettlewell.

This package 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 3 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