General overview of the Linux file system
A simple description of the UNIX system, also applicable to Linux, is this:
“On a UNIX system, everything is a file; if something is not a file, it is a process.”
This statement is true because there are special files that are more than just files
(named pipes and sockets, for instance), but to keep things simple, saying that
everything is a file is an acceptable generalization. A Linux system, just like UNIX,
makes no difference between a file and a directory, since a directory is just a file
containing names of other files. Programs, services, texts, images, and so forth, are all
files. Input and output devices, and generally all devices, are considered to be files,
according to the system.
In order to manage all those files in an orderly fashion, man likes to think of them in an
ordered tree-like structure on the hard disk, as we know from MS-DOS (Disk Operating
System) for instance. The large branches contain more branches, and the branches at
the end contain the tree's leaves or normal files. For now we will use this image of the
tree, but we will find out later why this is not a fully accurate image.
Sorts of files
Most files are just files, called
files; they contain normal data, for example text
files, executable files or programs, input for or output from a program and so on.
While it is reasonably safe to suppose that everything you encounter on a Linux system
is a file, there are some exceptions.
: files that are lists of other files.
: the mechanism used for input and output. Most special files are in
, we will discuss them later.
: a system to make a file or directory visible in multiple parts of the system's
file tree. We will talk about links in detail.
: a special file type, similar to TCP/IP sockets, providing inter-
process networking protected by the file system's access control.
: act more or less like sockets and form a way for processes to
communicate with each other, without using network socket semantics.
displays the file type, using the first character of each input line: