Special File Types  «Prev  Next»

ls command options

Here are the ls command options and their descriptions:
  1. ls -R: Generates a recursive listings
  2. ls -F: Labels file types in listing with /, *, @
  3. ls -t: Lists files in order of modification time
  4. ls -u: Lists files in order of access time
  5. ls -g: Includes information on group of files
  6. ls -a: Includes hidden files in the listing
  7. ls -l: Generates a long format listing

Special Files

A special file is a file that has no associated storage but can be used to gain access to a device. The goal here is to be able to access a device using the same mechanisms by which regular files and directories can be accessed. Thus, callers are able to invoke open(), read(), and write() in the same way that these system calls can be used on regular files. One noticeable difference between special files and other file types can be seen by issuing an ls command as follows

$ ls -l /dev/vx/*dsk/homedg/h
brw------ 1 root root 142,4002 Jun 5 1999 /dev/vx/dsk/homedg/h
crw------ 1 root root 142,4002 Dec 5 21:48 /dev/vx/rdsk/homedg/h
In this example there are two device files denoted by the b and c as the first character displayed on each line. This letter indicates the type of device that this file represents. Block devices are represented by the letter b while character devices are represented by the letter c. For block devices, data is accessed in fixed-size blocks while for character devices data can be accessed in multiple different sized blocks ranging from a single character upwards. Device special files are created with the mknod command as follows:
mknod name b major minor
mknod name c major minor

For example, to create the above two files, execute the following commands:
# mknod /dev/vx/dsk/homedg/h b 142 4002
# mknod /dev/vx/rdsk/homedg/h c 142 4002

The major number is used to point to the device driver that controls the device, while the minor number is a private field used by the device driver. The mknod command is built on top of the mknod() system call:
#include <sys/stat.h>
int mknod(const char *path, mode_t mode, dev_t dev);

The mode argument specifies the type of file to be created, which can be one of the following:
S_IFIFO. FIFO special file (named pipe).
S_IFCHR. Character special file.
S_IFDIR. Directory file.
S_IFBLK. Block special file.
S_IFREG. Regular file.
The file access permissions are