The /usr directory is the main application-storage directory. The binary files in this directory are not required for system start-up or maintenance, so the /usr hierarchy can be, and often is, located on a separate file system. Because of its (usually) large size, /usr has its own hierarchy of subdirectories. We will mention just a few:
/usr/X11R6: the entire X Window System hierarchy. All binaries and libraries required for the operation of X (including the X servers) must be located here. The /usr/X11R6/lib/X11 directory contains all aspects of X's configuration which do not vary from one computer to another. Specific configurations for each computer should go in /etc/X11.
/usr/bin: holds the large majority of the system's binaries. Any binary program which is not necessary for the maintenance of the system and is not a system administration program must be located in this directory. The only exceptions are programs you compile and install yourself, which must be located in /usr/local.
/usr/lib: contains all the necessary libraries to run programs located in /usr/bin and /usr/sbin. There is also a /usr/lib/X11 symbolic link pointing to /usr/X11R6/lib, the directory which holds the X Window System libraries (only if X is installed).
/usr/local: this is where you must install applications you compiled from source. The installation program should create the necessary hierarchy: lib/, bin/, etc.
/usr/share: this directory contains all architecture-independent data required by applications in /usr. Among other things, you will find zone and location information (zoneinfo and locale).
Let's also mention the /usr/share/doc and /usr/share/man directories, which respectively contain applications' documentation and the system's manual pages.