For each filename that is a directory, ls lists the contents of the directory; for each filename that is a file, ls repeats its name and any other information requested. By default, the output is sorted alphabetically. When no argument is given, the current directory is listed. When several arguments are given, the arguments are first sorted appropriately, but file arguments are processed before directories and their contents.
The mode printed under the -l option contains 10 characters interpreted as follows. If the first character is:
Entry is a directory.
Entry is a door.
Entry is a block-type special file.
Entry is a character-type special file.
Entry is a symbolic link.
Entry is a FIFO (also known as “named pipe”) special file.
Entry is an AF_UNIX address family socket.
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 refers 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:
The file is readable.
The file is writable.
The file is executable.
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 owner-execute permission character is given as s if the file has the set-user-id bit set.
The last character of the mode (normally x or `-') is true if the 1000 bit of the mode is on. See chmod(1) for the meaning of this mode. The indications of set-ID and 1000 bits of the mode are capitalized (S and T, respectively) if the corresponding execute permission is not set.
A plus sign (+) appended to the list of permissions indicates that an ACL is associated with the file.
When the sizes of the files in a directory are listed, a total count of blocks, including indirect blocks, is printed.
The following options are supported:
Lists all entries; in the absence of this option, entries whose names begin with a `.' are not listed (except for the privileged user, for whom ls normally prints even files that begin with a `.').
Same as -a, except that `.' and `. .' are not listed.
Uses time of last edit (or last mode change) for sorting or printing.
Forces multi-column output, with entries sorted down the columns; for ls, this is the default when output is to a terminal.
If argument is a directory, lists only its name (not its contents); often used with -l to get the status of a directory.
Forces each argument to be interpreted as a directory and lists 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.
Marks directories with a trailing slash (/), doors with a trailing greater-than sign (>), executable files with a trailing asterisk (*), FIFOs with a trailing vertical bar (|), symbolic links with a trailing at-sign (@), and AF_UNIX address family sockets with a trailing equals sign (=).
For ls, shows the group ownership of the file in a long output.
For each file, prints the i-node number in the first column of the report.
Lists in long format, giving mode, ACL indication, number of links, owner, size in bytes, and time of last modification for each file. If the file is a special file the size field will instead contain the major and minor device numbers. If the time of last modification is greater than six months ago, it is shown in the format `month date year'; files modified within six months show `month date time'. If the file is a symbolic link, the pathname of the linked-to file is printed preceded by `—>'.
If argument is a symbolic link, lists the file or directory the link references rather than the link itself.
Displays non-graphic characters in filenames as the character ?; for ls, this is the default when output is to a terminal.
Reverses the order of sort to get reverse alphabetic or oldest first as appropriate.
Recursively lists subdirectories encountered.
Gives size of each file, including any indirect blocks used to map the file, in kilobytes.
Sorts by time modified (latest first) instead of by name.
Uses time of last access instead of last modification for sorting (with the -t option) and/or printing (with the -l option).
Forces one entry per line output format; this is the default when output is not to a terminal.
The following operand is supported:
A path name of a file to be listed. If the file specified is not found, a diagnostic message will be output on standard error.
See largefile(5) for the description of the behavior of ls when encountering files greater than or equal to 2 Gbyte ( 231 bytes).
See attributes(5) for descriptions of the following attributes:
|ATTRIBUTE TYPE||ATTRIBUTE VALUE|
TAB are considered printing characters in filenames.
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.
Unprintable characters in file names may confuse the columnar output options.