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.

Wait for the termination of an unrelated process (specified by pid), and return its exit code too if possible. (Not very portable.)
Simple stand-alone converter between base64 (RFC 2045) and ordinary binary data.
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.
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.
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.
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).
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).
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.
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.
Unifies a configurable set of X selections between two X displays, effectively gluing them into a single shared selection domain.
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.


Tarballs of each utility are available here.


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 after.git
base64 base64.git
beep beep.git
buildrun buildrun.git
cvt-utf8 cvt-utf8.git
lns lns.git
multi multi.git
nntpid nntpid.git
pid pid.git
reservoir reservoir.git
xclipglue xclipglue.git
xcopy xcopy.git

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