MH & nmh: Email for Users & Programmers

May, 2006


If you keep a lot of mail in a lot of folders, you may want to file the same message in more than one folder. Because MH stores its messages in separate UNIX files, it can take advantage of a UNIX feature called a link. (To keep everything simple, Figure Important parts of a UNIX filesystem doesn't show them. But the Figure Two linked messages does.)

What's a Link?

Basically, a link is a name for a file. UNIX lets you have many links to the same file. In other words, the same file can have a lot of names.

Even when you have several links to a file, there's only one copy of the file stored on the computer's disk -- that file has several names. If you add another link (another name), the new link doesn't take any more disk space. (The directory file which holds the entry for the link will use a few characters to store the link itself, but that's usually insignificant.)

When you use the MH refile -link command, it links a message from one folder into another. In other words, it creates a second name for the same file without removing the original name.

Technical Stuff About Links

When UNIX stores a file on the disk, the file's name (or, in the case of MH, the file's message number) is just a convenience for users. To find the file, UNIX actually uses its i-number. An i-number identifies the file to UNIX.

A file can have as many links (as many names), in as many directories, as you want to give it. UNIX just relates the name to the file's i-number. In fact, a directory is basically just a list of filenames and their i-numbers.

The next Figure shows an example of a message with two links. One link is in the friends folder: message number 5. The other link is in the meals folder: message number 1. Both links have the same i-number (6241), so they both "point to" the same file on the disk. (If you know about "pointers" in programming, a link is a lot like a pointer to a memory location.)

Links can't span filesystems. Many newer UNIX filesystems have symbolic links. Symbolic links can span filesystems, but they take disk space to store.

Figure: Two linked messages