Unix file types
Encyclopedia
For normal files in the file system, Unix
does not impose or provide any internal file structure.
This implies that from the point of view of the operating system
, there is only one file type.
The structure and interpretation thereof is entirely dependent on how the file
is interpreted by software.
Unix does however have some special files. These special files can be identified by the
field. A normal file is indicated by a dash ('
$ ls -dl /etc/passwd
-rw-r-—r-- ... /etc/passwd
A directory is marked with a d as the first letter in the mode field in the output of `
$ ls -dl /
drwxr-xr-x 26 root root 4096 Sep 22 09:29 /
$ stat /
File: "/"
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 802h/2050d Inode: 128 Links: 26
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
...
A symbolic link is marked with an l (lower case L) as the first letter of the mode string, e.g.
lrwxrwxrwx ... termcap -> /usr/share/misc/termcap
lrwxrwxrwx ... S03xinetd -> ../init.d/xinetd
These named pipes are special files that can exist anywhere in the file system. These named pipe special files are made with the command
A named pipe is marked with a p as the first letter of the mode string, e.g.
prw-rw---- ... mypipe
. These allow communication between two processes. In addition to sending data, processes can send file descriptor
s across a Unix domain socket connection using the sendmsg and recvmsg system calls.
Unlike named pipes sockets are fully duplex-capable.
A socket is marked with an s as the first letter of the mode string, e.g.
srwxrwxrwx ... /tmp/.X11-unix/X0
Device files are used to apply access rights and to direct operations on the files to the appropriate device drivers.
Unix makes a distinction between character devices and block devices. The distinction is roughly as follows:
although, for example, disk partitions may have both character devices that provide unbuffered random access to blocks on the partition and block devices that provide buffered random access to blocks on the partition.
A character device is marked with a c as the first letter of the mode string. Likewise, a block device is marked with a b, e.g.
crw------- ... /dev/null
brw-rw---- ... /dev/sda
Sun
Solaris
operating system only.
A door is marked with a D (upper case) as the first letter of the mode string, e.g.
Dr--r--r-- ... name_service_door
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
does not impose or provide any internal file structure.
This implies that from the point of view of the operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
, there is only one file type.
The structure and interpretation thereof is entirely dependent on how the file
Computer file
A computer file is a block of arbitrary information, or resource for storing information, which is available to a computer program and is usually based on some kind of durable storage. A file is durable in the sense that it remains available for programs to use after the current program has finished...
is interpreted by software.
Unix does however have some special files. These special files can be identified by the
ls -l
command which displays the type of the file in the first alphabetic letter of the file system permissionsFile system permissions
Most current file systems have methods of administering permissions or access rights to specific users and groups of users. These systems control the ability of the users to view or make changes to the contents of the filesystem....
field. A normal file is indicated by a dash ('
-
').Regular file
Being the well known entity files are, files are also called "regular files" to distinguish them from "special files". They show up in ls -l without a specific character in the mode field:$ ls -dl /etc/passwd
-rw-r-—r-- ... /etc/passwd
Directory
The most common special file is the directory. The layout of a directory file is defined by the filesystem used. As several filesystems, both native and non-native, are available under Unix, there is not one directory file layout.A directory is marked with a d as the first letter in the mode field in the output of `
ls -dl
` or `stat
`, e.g.$ ls -dl /
drwxr-xr-x 26 root root 4096 Sep 22 09:29 /
$ stat /
File: "/"
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 802h/2050d Inode: 128 Links: 26
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
...
Symbolic link
A symbolic link is a reference to another file. This special file is stored as a textual representation of the referenced file's path (which means the destination may be a relative path, or may not exist at all).A symbolic link is marked with an l (lower case L) as the first letter of the mode string, e.g.
lrwxrwxrwx ... termcap -> /usr/share/misc/termcap
lrwxrwxrwx ... S03xinetd -> ../init.d/xinetd
Named pipe
One of the strengths of Unix has always been interprocess communication. Amongst the facilities provided by the OS are so-called pipes. These pipes connect the output of one Unix process to the input of another. This is fine if both processes are living in the same parent process space, started by the same user. There are however circumstances where the communicating processes must use named pipes. One such circumstance is that the processes have to be executed under different user names and permissions.These named pipes are special files that can exist anywhere in the file system. These named pipe special files are made with the command
mkfifo
as in mkfifo mypipe
.A named pipe is marked with a p as the first letter of the mode string, e.g.
prw-rw---- ... mypipe
Socket
A socket is a special file used for inter-process communicationInter-process communication
In computing, Inter-process communication is a set of methods for the exchange of data among multiple threads in one or more processes. Processes may be running on one or more computers connected by a network. IPC methods are divided into methods for message passing, synchronization, shared...
. These allow communication between two processes. In addition to sending data, processes can send file descriptor
File descriptor
In computer programming, a file descriptor is an abstract indicator for accessing a file. The term is generally used in POSIX operating systems...
s across a Unix domain socket connection using the sendmsg and recvmsg system calls.
Unlike named pipes sockets are fully duplex-capable.
A socket is marked with an s as the first letter of the mode string, e.g.
srwxrwxrwx ... /tmp/.X11-unix/X0
Device file
In Unix almost all things are handled as files and have a location in the file system — even hardware devices like hard drives. The great exception for devices and the files that represent them are network devices that do not turn up in the file system but are handled separately.Device files are used to apply access rights and to direct operations on the files to the appropriate device drivers.
Unix makes a distinction between character devices and block devices. The distinction is roughly as follows:
- character devices provide only a serial stream of input or output;
- block devices are randomly accessible;
although, for example, disk partitions may have both character devices that provide unbuffered random access to blocks on the partition and block devices that provide buffered random access to blocks on the partition.
A character device is marked with a c as the first letter of the mode string. Likewise, a block device is marked with a b, e.g.
crw------- ... /dev/null
/dev/null
In Unix-like operating systems, /dev/null or the null device is a special file that discards all data written to it and provides no data to any process that reads from it ....
brw-rw---- ... /dev/sda
Door
A door is a special file for inter-process communication between a client and server, currently implemented in theSun
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
Solaris
Solaris Operating System
Solaris is a Unix operating system originally developed by Sun Microsystems. It superseded their earlier SunOS in 1993. Oracle Solaris, as it is now known, has been owned by Oracle Corporation since Oracle's acquisition of Sun in January 2010....
operating system only.
A door is marked with a D (upper case) as the first letter of the mode string, e.g.
Dr--r--r-- ... name_service_door