Simon Tatham's miscellaneous utilities collection

This web page presents a collection of small Unix-based utility programs which I wrote for myself and found useful. Many of these are programs I ended up giving copies of to other people because they found them useful too; so now I'm publishing the whole lot to the world just in case anyone else wants them.

The utilities

Click on the name of each utility to see its man page.

after
Wait for the termination of an unrelated process (specified by pid), and return its exit code too if possible. (Not very portable.)
base64
Simple stand-alone converter between base64 (RFC 2045) and ordinary binary data.
beep
Produce a beep, by any means necessary (tries the X server, /dev/tty and standard output). More reliable than "echo -ne '\007'", and doesn't pollute redirected output files.
buildrun
Wait to run one program until a run of a previous one has completed successfully. Useful for synchronising build and test commands running in different terminal windows.
cvt-utf8
Convert between Unicode code points and the UTF-8 encoding. Also looks up each code point in the Unicode Character Database and/or the Unihan Database, and displays its name and/or definition.
lns
User-friendly tool for creating symlinks. Uses the same semantics as mv or cp (i.e. relative paths are always interpreted relative to the current directory, not the target one).
multi
Perl-based bulk file renamer. Transforms a list of file names using a user-provided Perl expression, and passes each name plus the transformed version to a command of your choice (often, but not limited to, mv or cp).
nntpid
Connects to a news server and retrieves a single article given its Message-ID, or given a group name and article number. Handy if your newsreader doesn't know how to follow references lines between newsgroups, so you can find out where a migrated thread came from.
reservoir
Copies its standard input to its standard output, but waits until it sees EOF on its input before beginning to write its output. Occasionally handy in interactive use or to overwrite a file in a quick-and-dirty manner.
xclipglue
Unifies a configurable set of X selections between two X displays, effectively gluing them into a single shared selection domain.
xcopy
Reads text out of the X selection and writes it to standard output, or alternatively reads text from standard input and places it in the X selection.

Download

Tarballs of each utility are available here.

after.tar.gz
base64.tar.gz
beep.tar.gz
buildrun.tar.gz
cvt-utf8.tar.gz
lns.tar.gz
multi.tar.gz
nntpid.tar.gz
reservoir.tar.gz
xclipglue.tar.gz
xcopy.tar.gz

If you want to see the latest state of development, you can check the development sources out from each utility's git repository, or browse the same repositories on the web:

Utility Repository URL Web interface
after https://git.tartarus.org/simon/after.git after.git
base64 https://git.tartarus.org/simon/base64.git base64.git
beep https://git.tartarus.org/simon/beep.git beep.git
buildrun https://git.tartarus.org/simon/buildrun.git buildrun.git
cvt-utf8 https://git.tartarus.org/simon/cvt-utf8.git cvt-utf8.git
lns https://git.tartarus.org/simon/lns.git lns.git
multi https://git.tartarus.org/simon/multi.git multi.git
nntpid https://git.tartarus.org/simon/nntpid.git nntpid.git
pid https://git.tartarus.org/simon/pid.git pid.git
reservoir https://git.tartarus.org/simon/reservoir.git reservoir.git
xclipglue https://git.tartarus.org/simon/xclipglue.git xclipglue.git
xcopy https://git.tartarus.org/simon/xcopy.git xcopy.git


Page maintained by Simon Tatham.
(last modified on Fri Apr 17 13:38:36 2020)