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
directories:
/ 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.
/etc/skel
When a new user account is created, files from this
directory are usually copied into the user's home
directory.
/etc/X11
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
tems
/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.
/usr/X11R6
The X-Window system, version 11 release 6.
/usr/X11R6/bin
Binaries which belong to the X-Windows system;
often, there is a symbolic link from the more tra
ditional /usr/bin/X11 to here.
/usr/X11R6/lib
Data files associated with the X-Windows system.
/usr/X11R6/lib/X11
These contain miscellaneous files needed to run X;
Often, there is a symbolic link from /usr/lib/X11
to this directory.
/usr/X11R6/include/X11
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
directory.
/usr/bin
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.
/usr/bin/X11
is the traditional place to look for X11 executa
bles; on Linux, it usually is a symbolic link to
/usr/X11R6/bin.
/usr/dict
This directory holds files containing word lists
for spell checkers.
/usr/doc
You may find documentation about the installed
software packages in this directory.
/usr/etc
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
/usr/etc.
/usr/include
Include files for the C compiler.
/usr/include/X11
Include files for the C compiler and the X-Windows
system. This is usually a symbolic link to
/usr/X11R6/include/X11.
/usr/include/asm
Include files which declare some assembler func
tions. This used to be a symbolic link to
/usr/src/linux/include/asm.
/usr/include/linux
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.)
/usr/include/g++
Include files to use with the GNU C++ compiler.
/usr/lib
Object libraries, including dynamic libraries, plus
some executables which usually are not invoked
directly. More complicated programs may have whole
subdirectories there.
/usr/lib/X11
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
/usr/X11R6/lib/X11.
/usr/lib/gcc-lib
contains executables and include files for the GNU
C compiler, gcc(1).
/usr/lib/groff
Files for the GNU groff document formatting system.
/usr/lib/uucp
Files for uucp(1).
/usr/lib/zoneinfo
Files for timezone information.
/usr/local
This is where programs which are local to the site
typically go.
/usr/local/bin
Binaries for programs local to the site go there.
/usr/local/doc
Local documentation
/usr/local/etc
Configuration files associated with locally
installed programs go there.
/usr/local/lib
Files associated with locally installed programs go
there.
/usr/local/info
Info pages associated with locally installed pro
grams go there.
/usr/local/man
Manpages associated with locally installed programs
go there.
/usr/local/sbin
Locally installed programs for system admininstra
tion.
/usr/local/src
Source code for locally installed software.
/usr/sbin
This directories contains program binaries for sys
tem admininstration which are not essentail for the
boot process, for mounting /usr, or for system
repair.
/usr/share
This directory contains subdirectories with spe
cific application data, that can be shared among
different architectures of the same OS.
/usr/share/doc
/usr/share/man
Manpages go in there, into their subdirectories.
/usr/share/man//man1-9
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.
/usr/src
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.
/usr/src/linux
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.
/usr/tmp
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.
/var/adm
This directory is superseded by /var/log and should
be a symbolic link to /var/log.
/var/backups
This directory is used to save backup copies of
important system files.
/var/cache/man/cat1-9
These directories contain preformatted manual pages
according to their manpage section.
/var/lock
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
character.
/var/log
Miscelanous log files.
/var/preserve
This is where vi(1) saves edit sessions so they can
be restored later.
/var/run
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.
/var/spool
Spooled (or queued) files for various programs.
/var/spool/at
Spooled jobs for at(1).
/var/spool/cron
Spooled jobs for cron(1).
/var/spool/lpd
Spooled files for printing.
/var/spool/mail
Users' mailboxes.
/var/spool/smail
Spooled files for the smail(1) mail delivery pro
gram.
/var/spool/news
Spool directory for the news subsystem.
/var/spool/uucp
Spooled files for uucp(1).
/var/tmp
Like /tmp, this directory holds temporary files
stored for an unspecified duration.
Back to Linux For Monkeys