Linux File System
Linux File System
Ubuntu (like all UNIX-like systems) organizes files in a hierarchical tree, where relationships are
thought of in teams of children and parent. Directories can contain other directories as well as
regular files, which are the "leaves" of the tree. Any element of the tree can be references by a path
name; an absolute path name starts with the character / (identifying the root directory, which
contains all other directories and files), then every child directory that must be traversed to reach
the element is listed, each separated by a / sign.
A relative path name is one that doesn't start with /; in that case, the directory tree is traversed
starting from a given point, which changes depending on context, called the current directory. In
every directory, there are two special directories called . and .., which refer respectively to the
directory itself, and to its parent directory.
Main directories
The standard Ubuntu directory structure mostly follows the Filesystem Hierarchy Standard, which
can be referred to for more detailed information. Here, only the most important directories in the
system will be presented.
/bin is a place for most commonly used terminal commands, like ls, mount, rm, etc.
/boot contains files needed to start up the system, including the Linux kernel, a RAM disk image
and bootloader configuration files.
/dev contains all device files, which are not regular files but instead refer to various hardware
devices on the system, including hard drives.
/etc contains system-global configuration files, which affect the system's behavior for all users.
/home this is the place for users' home directories.
/lib contains very important dynamic libraries and kernel modules
/media is intended as a mount point for external devices, such as hard drives or removable media
(floppies, CDs, DVDs).
/mnt is also a place for mount points, but dedicated specifically to "temporarily mounted" devices,
such as network filesystems.
/opt can be used to store addition software for your system, which is not handled by the package
manager.
/proc is a virtual filesystem that provides a mechanism for kernel to send information to processes.
/root is the superuser's home directory, not in /home/ to allow for booting the system even if
/home/ is not available.
/sbin contains important administrative commands that should generally only be employed by the
superuser.
/srv can contain data directories of services such as HTTP (/srv/www/) or FTP.
/sys is a virtual filesystem that can be accessed to set or obtain information about the kernel's view
of the system.
/tmp is a place for temporary files used by applications.
/usr contains the majority of user utilities and applications, and partly replicates the root directory
structure, containing for instance, among others, /usr/bin/ and /usr/lib.
/var is dedicated variable data that potentially changes rapidly; a notable directory it contains is
/var/log where system log files are kept.