This was blantantly copied from the Linux Programmer's Manual's hier(7) manual page, which can be found by typing "man 7 hier" on a Linux system.

If you use Linux, you should really know what directory is meant for storing what data. If you place data randomly across your filesystem you will never be able to find it again, due to the incredible amount of files used on Linux systems.

A  typical  Linux  system has, among others, the following

/      This is the root  directory.   This  is  where  the
      whole tree starts.

/bin   This  directory  contains executable programs which
      are needed in single user mode  and  to  bring  the
      system up or repair it.

/boot  Contains  static  files  for the boot loader.  This
      directory only holds the  files  which  are  needed
      during  the  boot  process.   The map installer and
      configuration files should go to /sbin and /etc.

/dev   Special or device files, which  refer  to  physical
      devices.  See mknod(1).

/dos   If  both  MS-DOS and Linux are run on one computer,
      this is a typical place to mount a DOS file system.

/etc   Contains configuration files which are local to the
      machine.  Some larger software packages, like  X11,
      can  have  their  own  subdirectories  below  /etc.
      Site-wide configuration files may be placed here or
      in  /usr/etc.  Nevertheless, programs should always
      look for these files in /etc and you may have links
      for these files to /usr/etc.

      When a new user account is created, files from this
      directory are usually copied into the  user's  home

      Configuration files for the X11 window system.

/home  On  machines with home directories for users, these
      are usually beneath  this  directory,  directly  or
      not.   The  structure  of this directory depends on
      local admininstration decisions.

/lib   This directory should hold those  shared  libraries
      that  are  necessary  to boot the system and to run
      the commands in the root filesystem.

/mnt   is a mount point for temporarily  mounted  filesys­

/proc  This  is  a  mount  point  for the proc filesystem,
      which provides information about running  processes
      and   the   kernel.   This  pseudo-file  system  is
      described in more detail in proc(5).

/sbin  Like /bin, this directory holds commands needed  to
      boot the system, but which are usually not executed
      by normal users.

/tmp   This directory contains temporary files  which  may
      be deleted with no notice, such as by a regular job
      or at system boot up.

/usr   This directory is usually mounted from  a  seperate
      partition.  It should hold only sharable, read-only
      data, so that it can be mounted by various machines
      running Linux.

      The X-Window system, version 11 release 6.

      Binaries  which  belong  to  the  X-Windows system;
      often, there is a symbolic link from the more  tra­
      ditional /usr/bin/X11 to here.

      Data files associated with the X-Windows system.

      These  contain miscellaneous files needed to run X;
      Often, there is a symbolic link  from  /usr/lib/X11
      to this directory.

      Contains  include  files  needed for compiling pro­
      grams using the X11 window system.  Often, there is
      a  symbolic  link  from  /usr/inlcude/X11  to  this

      This is the primary directory for  executable  pro­
      grams.   Most  programs  executed  by  normal users
      which are not needed for booting or  for  repairing
      the  system  and  which  are  not installed locally
      should be placed in this directory.

      is the traditional place to look for  X11  executa­
      bles;  on  Linux,  it usually is a symbolic link to

      This directory holds files  containing  word  lists
      for spell checkers.

      You  may  find  documentation  about  the installed
      software packages in this directory.

      Site-wide configuration files to be shared  between
      several  machines  may be stored in this directory.
      However, commands  should  always  reference  those
      files  using  the /etc directory.  Links from files
      in /etc should point to the  appropriate  files  in

      Include files for the C compiler.

      Include  files for the C compiler and the X-Windows
      system.   This  is  usually  a  symbolic  link   to

      Include  files  which  declare some assembler func­
      tions.   This  used  to  be  a  symbolic  link   to

      This  contains  information  which  may change from
      system release to system release and used to  be  a
      symbolic  link  to  /usr/src/linux/include/linux to
      get at operating system specific information.

      (Note that one should have include files there that
      work  correctly  with  the current libc and in user
      space. However, Linux kernel source is not designed
      to  be  used  with  user programs and does not know
      anything about the libc you are using. It  is  very
      likely   that   things   will   break  if  you  let
      /usr/include/asm and /usr/include/linux point at  a
      random  kernel  tree.  Debian systems don't do this
      and use headers from a known good  kernel  version,
      provided in the libc*-dev package.)

      Include files to use with the GNU C++ compiler.

      Object libraries, including dynamic libraries, plus
      some executables  which  usually  are  not  invoked
      directly.  More complicated programs may have whole
      subdirectories there.

      The usual place for data files  associated  with  X
      programs,  and configuration files for the X system
      itself.  On Linux, it usually is a symbolic link to

      contains  executables and include files for the GNU
      C compiler, gcc(1).

      Files for the GNU groff document formatting system.

      Files for uucp(1).

      Files for timezone information.

      This  is where programs which are local to the site
      typically go.

      Binaries for programs local to the site go there.

      Local documentation

      Configuration   files   associated   with   locally
      installed programs go there.

      Files associated with locally installed programs go

      Info pages associated with locally  installed  pro­
      grams go there.

      Manpages associated with locally installed programs
      go there.

      Locally installed programs for system  admininstra­

      Source code for locally installed software.

      This directories contains program binaries for sys­
      tem admininstration which are not essentail for the
      boot  process,  for  mounting  /usr,  or for system

      This directory contains  subdirectories  with  spe­
      cific  application  data,  that can be shared among
      different architectures of the same OS.


      Manpages go in there, into their subdirectories.

      These directories contain manual pages which are in
      source  code form.  Systems which use a unique lan­
      guage and code set for all manual  pages  may  omit
      the  substring.

      Source  files  for  different  parts of the system,
      included with some packages for reference purposes.
      Don't  work  here  with your own projects, as files
      below  /usr  should  be   read-only   except   when
      installing software.

      This  has  always  been the traditional place where
      kernel sources were unpacked. This was important on
      systems that /usr/include/linux was a symlink here.
      You  should  probably  use  another  directory  for
      building the kernel now.

      Obsolete.  This should be a link to /var/tmp.  This
      link is present only for compatibility reasons  and
      shouldn't be used.

/var   This  directory  contains files which may change in
      size, such as spool and log files.

      This directory is superseded by /var/log and should
      be a symbolic link to /var/log.

      This  directory  is  used  to save backup copies of
      important system files.

      These directories contain preformatted manual pages
      according to their manpage section.

      Lock  files are placed in this directory.  The nam­
      ing   convention   for   device   lock   files   is
      LCK..  where   is the device's name
      in the filesystem.  The format used is that of  HDU
      UUCP lock files, i.e. lock files contain a PID as a
      10-byte ASCII decimal number, followed by a newline

      Miscelanous log files.

      This is where vi(1) saves edit sessions so they can
      be restored later.

      Run-time variable files, like files holding process
      identifiers  (PIDs)  and  logged  user  information
      (utmp).   Files  in  this  directory  are   usually
      cleared when the system boots.

      Spooled (or queued) files for various programs.

      Spooled jobs for at(1).

      Spooled jobs for cron(1).

      Spooled files for printing.

      Users' mailboxes.

      Spooled  files  for the smail(1) mail delivery pro­

      Spool directory for the news subsystem.

      Spooled files for uucp(1).

      Like /tmp, this  directory  holds  temporary  files
      stored for an unspecified duration.

Back to Linux For Monkeys

Log in or register to write something here or to contact authors.