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
Question: How is "ls -R" used to generate recursive listings in Unix?
The command "ls -R" is used in Unix to generate a recursive listing of files and directories. The "ls" command is used to list the contents of a directory, and the "-R" option stands for "recursive", which means that the command will list the contents of all subdirectories as well. When you enter the command
ls -R
in the terminal, Unix will display a list of all files and directories in the current directory and its subdirectories, including hidden files and directories. This can be useful when you need to navigate through a large directory tree and want to see the contents of all the subdirectories in one view.

What is the purpose of the ls -d option in Unix

The
ls -d
option is used to list the directory itself, rather than its contents. When the -d option is used with ls, the command will only display the directory name, and not the files or subdirectories within it.
  1. Example 1:
    $ ls -d /path/to/directory
    /path/to/directory
    
  2. Example 2: It can be useful when you only want to see the directory name and check the permission or ownership of that directory, without displaying its contents. It can also be used with wildcard characters to list multiple directories matching a pattern.
    $ ls -d /path/to/dir*
    /path/to/dir1/ /path/to/dir2/ 
    

You can use this -d option along with other options like -l or -h to see the long format of the directory, or show size of the directory in human-readable format.

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

Unix System Administration