[Next Chapter] [Top page] [Previous Chapter]

CHAPTER 3 -
THE UNIX FILESTORE


File hierarchy

Unix has a hierarchical tree-like filestore. The filestore contains files and directories, as illustrated in the diagram below.

An illustration of a fragment of the Unix filestore hierarchy.

The top-level directory is known as the root. Beneath the root are several system directories. The root is designated by the / character.

The directories below the root are designated by the pathnames:

/bin			/etc			/usr

Confusingly, the / character is also used as a separator in pathnames. So, from the figure above, the directory lnp5jb can be referred to by the pathname /bin/home/sunserv1_b/lnp5jb. Historically, user directories were often kept in the directory /usr. However, it is often desirable to organise user directories in a different manner.

Users have their own directory in which they can create and delete files, and create their own sub-directories. For example:

/user/ei/eib035

belongs to someone whoe has the username eib035.

Some typical system directories below the root directory:

/bin contains many of the programs which will be executed by users
/etc files used by system administrators
/dev hardware peripheral devices
/lib system libraries
/usr normally contains applications software
/home home directories for different systems

The current directory

This refers to your actual location in the filestore hierarchy. When you log in the current directory is set to the home directory. You can then change current directory, effectively moving around the filestore tree structure. The current directory is also called the "current working directory" and the "working directory". The current directory can be referred to in pathnames by the . character (a full stop).

Changing current directory

The command cd is used to change your current directory. For example:

% cd bin

will move you from your current directory, down one "branch" to the directory bin, if such a directory exists. Typing cd with no arguments takes you to your home directory.

Display current directory

The command pwd is used to display your current directory. For example:

% pwd
/home/sunserv1_b/lnp5jb/bin

Pathnames

Files and directories may be referred to by their absolute pathname. For example:

/home/sunserv1_b/lnp5jb/bin/hello

Files and directories may also be referred to by a relative pathname. For example, if your current directory is /home/sunserv1_b/lnp5jb, the above file can be referred to as:

bin/hello

The home directory

Each user has a home directory. They will be attached to this directory when they log in. Jenny Brown's home directory is:

/home/sunserv1_b/lnp5jb

The symbol ~ can be used to refer to the home directory. If Jenny Brown wishes to refer to her file she can give:

~/bin/hello

rather than typing the long form:

/home/sunserv1_b/lnp5jb/bin/hello

The symbol ~ can also refer to other the home directory of other users. For example Jenny can refer to a file in John Smith's home directory using:

~lnp5js/test.dat

The parent directory

The parent directory is the directory above the current directory. The parent directory can be referred to by the .. characters (two full stops). For example to refer to the file test.dat in the parent directory:

../test.dat

Linking files

The ln command can be used to link files and directories across the filestore system. The symbolic link function (ln -s) is the most useful. This enables a file or directory to appear to be in a particular directory when it is in fact stored somewhere else. This can save the user from having to type out long pathnames for frequently used files or directories. For example, if you want to use the files in /usr/games regularly, you can set up a symbolic link to this directory. If Jenny Brown is in her home directory and types:

%  ln  -s  /usr/games  fun

this will create what appears to be a new directory below her home directory, entitled fun. When she does cd fun she will move to /usr/games. If she now does pwd, the current directory will appear as /home/sunserv2_a/lnp5jb/fun. Some things may be a little surprising however: the parent directory, for example, will be that of the original file or directory.


Exercises

  1. Check which directory you are currently in. If necessary, move to your home directory. (Remember: cd will do this from anywhere).
  2. Move to the root directory. ("Move to..." means "change your current working directory to...". It is useful to picture the process as movement around the tree structure.)
  3. Work your way down one directory at a time to your home directory.
  4. Experiment with using relative and absolute pathnames; show how the two can produce the same results.
  5. Explore your systems filestore. Try to get into the home directory of someone else you know! (You may not be able to view their files.)

[Next Chapter] [Top page] [Previous Chapter]