Unix: Introduction to files
Using a Unix shell account inevitably involves working with files. This page gives a very brief introduction to files under Unix.
The directory structure
Under Unix, files are organised into directories. All directories are arranged into a single tree shaped structure, irrespective of where they are physically located. The root of this tree is called the root directory, and is refered to as "/". The root directory contains various sub-directories, which in turn can also contain sub-directories, and so on. In this way, all directories are "descended" from the root directory.
The location of files can be specified using either absolute or relative paths.
Absolute paths start with a "/", and then give their location relative to the
root directory, for example: /var/spool/mail/pdw
. Relative paths
are taken relative to the current directory, for example foo/bar
,
refers to the file bar
in the subdirectory foo
of the
current directory.
You can get a listing of the files in the current directory by typing
ls
.
Your home directory
Your home directory is a directory that you and only you have permission to
write to. When you first log in to your shell account your current directory
is your home directory. You can find out what the full, absolute path of this
directory is by typing pwd
, but you should never normally need to
know this.
You can change your current directory using the cd
command. For
example, to change into a subdirectory of the current directory called mail,
type:
cd mail
To switch back to the parent directory type:
cd ..
At any time you can switch to your home directory, simply by typing
cd
on its own. When typing commands, you can also refer to your
home directory as "~
". For example, ~/foo
refers to
the file foo
in your home directory.
File names
Unix imposes very few restrictions on characters that can be included in the name of a file, or on the length of such names. In practice, it is a good idea to avoid whitespace characters (such as space, tab and newline) and other special characters, as these can be awkward to work with.
In contrast to DOS and Windows, Unix does not generally distinguish between filetypes by extensions, all though there are some well known conventions for naming files. Whether a file is a program file, and can be run, is determined by setting the executable file attribute rather than giving it a particular extension.
If a filename starts with a ".
" it is treated as a hidden file,
and will not show in a directory listing when you type ls
. To see
such files you must give the -a
option to ls
:
ls -a
Links
Another concept in the Unix filesystem is that of links. Links can be either symbolic or hard. Hard links are alternative names for a file, and are in every way equivalent to the "original" name. More common are symbolic links. These are files that point to another file and have various uses. One place that you will see symbolic links is if you have a virtual web server. If this is the case, the documents for your server are not located in your home directory, but are stored elsewhere in the filesystem. We will create symbolic links in your home directory pointing to the relevant point in the filesystem. This is for convenience so that you do not have to remember the full path to your web server documents, and for most intents and purposes they will appear as if they are in your home directory.