||<>|| 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 referenced 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. The fact that all files and directories have a common root means that, even if several different storage devices are present on the system, they are all seen as directories somewhere in the tree, once they are [[Mount|mounted]] to the desired place. FilePermissions are another important part of the files organization system: they are superimposed to the directory structure and assign ''permissions'' to each element of the tree, ultimately decided by whom it can be accessed and how. == Examples == An absolute path name, pointing to what is normally an executable file on an Ubuntu system: {{{ /usr/bin/test }}} An absolute path name, but pointing to a directory instead of a regular file: {{{ /usr/bin/ }}} A relative path name, which will point to {{{/usr/bin/test}}} only if the current directory is {{{/usr/}}}: {{{ bin/test }}} A relative path name, which will point to {{{/usr/bin/test}}} if the current directory is any directory in {{{/usr/}}}, for instance {{{/usr/share/}}}: {{{ ../bin/test }}} A path name using the special shortcut {{{~}}}, which refers to the current user's ''home'' directory: {{{ ~/Desktop/ }}} Path names can contain almost any character, but some characters, such as '''space''', must be ''escaped'' in most software, usually by enclosing the name in quotation marks: {{{ "~/Examples/Experience ubuntu.ogg" }}} or by employing the escape character {{{\}}}: {{{ ~/Examples/Experience\ ubuntu.ogg }}} == Main directories == The standard Ubuntu directory structure mostly follows the [[http://www.pathname.com/fhs|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 [[UsingTheTerminal|terminal]] commands, like {{{ls}}}, {{{mount}}}, {{{rm}}}, etc. '''/boot''' contains files needed to start up the system, including the [[Kernel|Linux kernel]], a RAM disk image and [[GrubHowTo|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''' home sweet 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 additional software for your system, which is not handled by the [[InstallingSoftware|package manager]]. '''/proc''' is a virtual filesystem that provides a mechanism for kernel to send information to processes. '''/root''' is the [[RootSudo|superuser]]'s home directory, not in {{{/home/}}} to allow for booting the system even if {{{/home/}}} is not available. '''/run''' is a ''tmpfs'' (temporary file system) available early in the boot process where ephemeral run-time data is stored. Files under this directory are removed or truncated at the beginning of the boot process. <
> (It deprecates various legacy locations such as {{{/var/run}}}, {{{/var/lock}}}, {{{/lib/init/rw}}} in otherwise __non-ephemeral__ directory trees as well as {{{/dev/.*}}} and {{{/dev/shm }}} which are __not__ device files.) '''/sbin''' contains important administrative commands that should generally only be employed by the [[RootSudo|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 to variable data, such as logs, databases, websites, and temporary spool (e-mail etc.) files that __persist__ from one boot to the next. A notable directory it contains is {{{/var/log}}} where system log files are kept. ---- CategorySystem