All rights reserved. The Berkeley software License Agreement
specifies the terms and conditions for redistribution.
@(#)ls.1 6.6 (Berkeley) 09/30/87
There are a large number of options:
-l List in long format, giving mode, number of links, owner, size in bytes, and time of last modification for each file. (See below.) If the file is a special file the size field will instead contain the major and minor device numbers. If the file is a symbolic link the pathname of the linked-to file is printed preceded by ``->''.
-g Include the group ownership of the file in a long output.
-t Sort by time modified (latest first) instead of by name.
-a List all entries; in the absence of this option, entries whose names begin with a period ( . ) are not listed.
-s Give size in kilobytes of each file.
-d If argument is a directory, list only its name; often used with -l to get the status of a directory.
-L If argument is a symbolic link, list the file or directory the link references rather than the link itself.
-r Reverse the order of sort to get reverse alphabetic or oldest first as appropriate.
-u Use time of last access instead of last modification for sorting (with the -t option) and/or printing (with the -l option).
-c Use time when file status was last changed for sorting or printing.
-i For each file, print the i-number in the first column of the report.
-f Force each argument to be interpreted as a directory and list the name found in each slot. This option turns off "-l, -t, -s," and -r, and turns on -a; the order is the order in which entries appear in the directory.
-F cause directories to be marked with a trailing `/', sockets with a trailing `=', symbolic links with a trailing `@', and executable files with a trailing `*'.
-R recursively list subdirectories encountered.
-1 force one entry per line output format; this is the default when output is not to a terminal.
-C force multi-column output; this is the default when output is to a terminal.
-q force printing of non-graphic characters in file names as the character `?'; this is the default when output is to a terminal.
The mode printed under the -l option contains 11 characters which are interpreted as follows: the first character is
3 d if the entry is a directory;
.ns
3 b if the entry is a block-type special file;
.ns
3 c if the entry is a character-type special file;
.ns
3 l if the entry is a symbolic link;
.ns
s if the entry is a socket, or
.ns
3 - if the entry is a plain file.
The next 9 characters are interpreted as three sets of three bits each. The first set refers to owner permissions; the next refers to permissions to others in the same user-group; and the last to all others. Within each set the three characters indicate permission respectively to read, to write, or to execute the file as a program. For a directory, `execute' permission is interpreted to mean permission to search the directory. The permissions are indicated as follows:
3 r if the file is readable;
.ns
3 w if the file is writable;
.ns
3 x if the file is executable;
.ns
3 - if the indicated permission is not granted.
The group-execute permission character is given as s if the file has the set-group-id bit set; likewise the user-execute permission character is given as s if the file has the set-user-id bit set. These are given as S (capitalized) if the corresponding execute permission is NOT set.
The last character of the mode (normally `x' or `-') is t if the 1000 bit of the mode is on. See chmod (1) for the meaning of this mode. This is given as T (capitalized) if the corresponding execute permission is NOT set.
When the sizes of the files in a directory are listed, a total count of blocks, including indirect blocks is printed.
/etc/group to get group id's for `ls -g'.
The output device is assumed to be 80 columns wide.
The option setting based on whether the output is a teletype is undesirable as ``ls -s'' is much different than ``ls -s | lpr''. On the other hand, not doing this setting would make old shell scripts which used ls almost certain losers.