Description

For each file that is a directory, ls lists the contents of
the directory. For each file that is an ordinary file, ls repeats
its name and any other information requested. The output is sorted alphabetically by
default. When no argument is given, the current directory (.) is listed.
When several arguments are given, the arguments are first sorted appropriately, but
file arguments appear before directories and their contents.

There are three major listing formats. The default format for output directed
to a terminal is multi-column with entries sorted down the columns. The
-1 option allows single column output and -m enables stream output format.
In order to determine output formats for the -C, -x, and -m options,
ls uses an environment variable, COLUMNS, to determine the number of character
positions available on one output line. If this variable is not set,
the terminfo(4) database is used to determine the number of columns, based
on the environment variable, TERM. If this information cannot be obtained, 80
columns are assumed. If the -w option is used, the argument overrides any
other column width.

The mode printed when the -e, -E, -g, -l, -n, -o, -v,
-V, or -@ option is in effect consists of eleven characters. The
first character can be one of the following:

d

The entry is a directory.

D

The entry is a door.

l

The entry is a symbolic link.

b

The entry is a block special file.

c

The entry is a character special file.

p

The entry is a FIFO (or “named pipe”) special file.

P

The entry is an event port.

s

The entry is an AF_UNIX address family socket.

-

The entry is an ordinary file.

The next 9 characters are interpreted as three sets of three bits
each. The first set refers to the owner's permissions; the next to
permissions of others in the user-group of the file; and the last
to all others. Within each set, the three characters indicate permission to
read, to write, and to execute the file as a program, respectively. For
a directory, execute permission is interpreted to mean permission to search the
directory for a specified file. The character after permissions is an ACL
or extended attributes indicator. This character is an @ if extended attributes are
associated with the file and the -@ option is in effect. Otherwise,
this character is a plus sign (+) character if a non-trivial ACL
is associated with the file or a space character if not.

If -/ and/or -% are in effect, then the extended system attributes
are printed when filesystem supports extended system attributes. The display looks as
follows:

ls-l (the long list) prints its output as follows for the
POSIX locale:

-rwxrwxrwx+ 1 smith dev 10876 May 16 9:42 part2

Reading from right to left, you see that the current directory holds
one file, named part2. Next, the last time that file's contents were
modified was 9:42 A.M. on May 16. The file contains 10,876 characters, or bytes.
The owner of the file, or the user, belongs to the group dev
(perhaps indicating development), and his or her login name is smith. The
number, in this case 1, indicates the number of links to file
part2 (see cp(1)). The plus sign indicates that there is an ACL
associated with the file. If the -@ option has been specified, the
presence of extended attributes supersede the presence of an ACL and the plus
sign is replaced with an 'at' sign (@). Finally, the dash and
letters tell you that user, group, and others have permissions to read,
write, and execute part2.

The execute (x) symbol occupies the third position of the three-character sequence.
A - in the third position would have indicated a denial of
execution permissions.

The permissions are indicated as follows:

r

The file is readable.

w

The file is writable.

x

The file is executable.

-

The indicated permission is not granted.

s

The set-user-ID or set-group-ID bit is on, and the corresponding user or group execution bit is also on.

S

Undefined bit-state (the set-user-ID or set-group-id bit is on and the user or group execution bit is off). For group permissions, this applies only to non-regular files.

t

The 1000 (octal) bit, or sticky bit, is on (see chmod(1)), and execution is on.

T

The 1000 bit is turned on, and execution is off (undefined bit-state).

/usr/bin/ls

l

Mandatory locking occurs during access (on a regular file, the set-group-ID bit is on and the group execution bit is off).

/usr/xpg4/bin/ls and /usr/xpg6/bin/ls

L

Mandatory locking occurs during access (on a regular file, the set-group-ID bit is on and the group execution bit is off).

For user and group permissions, the third position is sometimes occupied by
a character other than x or -. s or S also can
occupy this position, referring to the state of the set-ID bit, whether
it be the user's or the group's. The ability to assume the same
ID as the user during execution is, for example, used during login
when you begin as root but need to assume the identity of
the user you login as.

In the case of the sequence of group permissions, l can occupy
the third position. l refers to mandatory file and record locking. This
permission describes a file's ability to allow other files to lock its
reading or writing permissions during access.

For others permissions, the third position can be occupied by t or
T. These refer to the state of the sticky bit and execution
permissions.

Options

The following options are supported:

/usr/bin/ls, /usr/xpg4/bin/ls, and /usr/xpg6/bin/ls

The following options are supported for all three versions:

-a

--all

Lists all entries, including those that begin with a dot (.), which are normally not listed.

-A

--almost-all

Lists all entries, including those that begin with a dot (.), with the exception of the working directory (.) and the parent directory (..).

-b

--escape

Forces printing of non-printable characters to be in the octal \ddd notation.

-B

--ignore-backups

Do not display any files ending with a tilde (~).

-c

Uses time of last modification of the i-node (file created, mode changed, and so forth) for sorting (-t) or printing (-l or -n).

-C

Multi-column output with entries sorted down the columns. This is the default output format.

-d

If an argument is a directory, lists only its name (not its contents). Often used with -l to get the status of a directory.

-e

The same as -l, except displays time to the second, and with one format for all files regardless of age: mmm dd hh:mm:ss yyyy.

-E

The same as -l, except displays time to the nanosecond and with one format for all files regardless of age: yyyy-mm-dd hh:mm:ss.nnnnnnnnn (ISO 8601:2000 format).

In addition, this option displays the offset from UTC in ISO 8601:2000 standard format (+hhmm or -hhmm) or no characters if the offset is indeterminable. The offset reflects the appropriate standard or alternate offset in force at the file's displayed date and time, under the current timezone.

-f

Forces each argument to be interpreted as a directory and list the name found in each slot. This option turns off -l, -t, -s, -S, and -r, and turns on -a. The order is the order in which entries appear in the directory.

-F

--classify

Append a symbol after certain types of files to indicate the file type. The following symbols are used:

/

Directory

>

Door file

|

Named pipe (FIFO)

@

Symbolic link

=

Socket

*

Executable

-g

The same as -l, except that the owner is not printed.

-h

--human-readable

All sizes are scaled to a human readable format, for example, 14K, 234M, 2.7G, or 3.0T. Scaling is done by repetitively dividing by 1024. The last --si or -h option determines the divisor used.

-H

--dereference-command-line

If an argument is a symbolic link that references a directory, this option evaluates the file information and file type of the directory that the link references, rather than those of the link itself. However, the name of the link is displayed, rather than the referenced directory.

-i

--inode

For each file, prints the i-node number in the first column of the report.

-k

All sizes are printed in kbytes. Equivalent to --block-size=1024.

-l

Lists in long format, giving mode, ACL indication, number of links, owner, group, size in bytes, and time of last modification for each file (see above). If the file is a special file, the size field instead contains 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' for the POSIX locale. When the LC_TIME locale category is not set to the POSIX locale, a different format of the time field can be used. Files modified within six months show `month date time'. If the file is a symbolic link, the filename is printed followed by “→” and the path name of the referenced file.

-L

--dereference

If an argument is a symbolic link, this option evaluates the file information and file type of the file or directory that the link references, rather than those of the link itself. However, the name of the link is displayed, rather than the referenced file or directory.

-m

Streams output format. Files are listed across the page, separated by commas.

-n

--numeric-uid-gid

The same as -l, except that the owner's UID and group's GID numbers are printed, rather than the associated character strings.

-o

--no-group

The same as -l, except that the group is not printed.

-p

Puts a slash (/) after each filename if the file is a directory.

-q

--hide-control-chars

Forces printing of non-printable characters in file names as the character question mark (?).

-r

--reverse

Reverses the order of sort to get reverse alphabetic, oldest first, or smallest file size first as appropriate.

-R

--recursive

Recursively lists subdirectories encountered.

-s

--size

Indicate the total number of file system blocks consumed by each file displayed.

-S

Sort by file size (in decreasing order) and for files with the same size by file name (in increasing alphabetic order) instead of just by name.

-t

Sorts by time stamp (latest first) instead of by name. The default is the last modification time. See -c, -u and -%.

-u

Uses time of last access instead of last modification for sorting (with the -t option) or printing (with the -l option).

-U

Output is unsorted.

-v

The same as -l, except that verbose ACL information is displayed as well as the -l output. ACL information is displayed even if the file or directory doesn't have an ACL.

-V

The same as -l, except that compact ACL information is displayed after the -l output.

The -V option is only applicable to file systems that support NFSv4 ACLs, such as the Solaris ZFS file system.

The format of the displayed ACL is as follows:

entry_type : permissions : inheritance_flags : access_type

entry_type is displayed as one of the following:

user:username

Additional user access for username.

group:groupname

Additional group access for group groupname.

owner@

File owner.

group@

File group owner.

everyone@

Everyone access, including file owner and file group owner. This is not equivalent to the POSIX other class.

The following permissions, supported by the NFSv4 ACL model, are displayed by using the -v or -V options:

read_data (r)

Permission to read the data of a file.

list_directory (r)

Permission to list the contents of a directory.

write_data (w)

Permission to modify a file's data. anywhere in the file's offset range.

add_file (w)

Permission to add a new file to a directory.

append_data (p)

The ability to modify a file's data, but only starting at EOF.

add_subdirectory (p)

Permission to create a subdirectory to a directory.

read_xattr (R)

Ability to read the extended attributes of a file.

write_xattr (W)

Ability to create extended attributes or write to the extended attribute directory.

execute (x)

Permission to execute a file.

read_attributes (a)

The ability to read basic attributes (non-ACLs) of a file.

write_attributes (A)

Permission to change basic attributes (non-ACLs) of a file.

delete (d)

Permission to delete a file.

delete_child (D)

Permission to delete a file within a directory.

read_acl (c)

Permission to read the ACL of a file.

write_acl (C)

Permission to write the ACL of a file.

write_owner (o)

Permission to change the owner of a file.

synchronize (s)

Permission to access file locally at server with synchronize reads and writes.

-

No permission granted

The following inheritance flags, supported by the NFSv4 ACL model, are displayed by using the -v or -V options:

file_inherit (f)

Inherit to all newly created files.

dir_inherit (d)

Inherit to all newly created directories.

inherit_only (i)

When placed on a directory, do not apply to the directory, only to newly created files and directories. This flag requires that either file_inherit and or dir_inherit is also specified.

no_propagate (n)

Indicates that ACL entries should be inherited to objects in a directory, but inheritance should stop after descending one level. This flag is dependent upon either file_inherit and or dir_inherit also being specified.

successful_access (S)

Indicates if an alarm or audit record should be initiated upon successful accesses. Used with audit/alarm ACE types.

failed_access (F)

Indicates if an alarm or audit record should be initiated when access fails. Used with audit/alarm ACE types.

inherited (I)

ACE was inherited.

-

No permission granted.

access_type is displayed as one of the following types:

alarm

Permission field that specifies permissions that should trigger an alarm.

Multi-column output with entries sorted across rather than down the page.

-1

Prints one entry per line of output.

-@

The same as -l, except that extended attribute information overrides ACL information. An @ is displayed after the file permission bits for files that have extended attributes.

-/

The -/ option supports two option arguments c (compact mode) and v (verbose mode). Displays the long listing, same as -l. In addition, displays the extended system attributes associated with the file when extended system attributes are fully supported by the underlying file system.

appendonly

Allows a file to be modified only at offset EOF. Attempts to modify a file at a location other than EOF fails with EPERM.

archive

Indicates if a file has been modified since it was last backed up. Whenever the modification time (mtime) of a file is changed the archive attribute is set.

av_modified

ZFS sets the anti-virus attribute which whenever a file's content or size changes or when the file is renamed.

av_quarantined

Anti-virus software sets to mark a file as quarantined.

crtime

Timestamp when a file is created.

hidden

Marks a file as hidden.

immutable

Prevents the content of a file from being modified. Also prevents all metadata changes, except for access time updates. When placed on a directory, prevents the deletion and creation of files in the directories. Attempts to modify the content of a file or directory marked as immutable fail with EPERM. Attempts to modify any attributes (with the exception of access time and, with the proper privileges, the immutable) of a file marked as immutable fails with EPERM.

nodump

Solaris systems have no special semantics for this attribute.

nounlink

Prevents a file from being deleted. On a directory, the attribute also prevents any changes to the contents of the directory. That is, no files within the directory can be removed or renamed. The errnoEPERM is returned when attempting to unlink or rename files and directories that are marked as nounlink.

readonly

Marks a file as readonly. Once a file is marked as readonly the content data of the file cannot be modified. Other metadata for the file can still be modified.

sparse

This attribute is available to users and applications to indicate that a file can be interpreted as sparse. It does not indicate whether or not the file is actually sparse and it has no special semantics on the Solaris operating system. The sparse attribute will be cleared if the file is truncated to zero length.

The display in verbose mode (/ v) uses full attribute names when
it is set and the name prefixed by 'no' when it is
not set.

The attribute name crtime and all other timestamps are handled by the
option -% with the respective timestamp option arguments and also with all
option argument. The display positions are as follows: The display in verbose
mode (-/ v) uses full attribute names when it is set and
the name prefixed by no when it is not set. The attribute
name crtime and all other timestamps are handled by the option -%
with the respective timestamp option arguments and also with all option argument.

Uses the last modification time of the file contents for sorting or printing.

If extended system attributes are not supported or if the user does
not have read permission on the file or if the crtime extended
attribute is not set, crtime is treated as a synonym for mtime.

When option argument -all is specified, all available timestamps are printed which
includes -atime, -ctime, -mtime and on the extended system attribute supporting file
systems, -crtime (create time). The option -% all does not effect which timestamp
is displayed in long format and does not affect sorting.

--block-sizesize

Display sizes in multiples of size. Size can be scaled by suffixing one of YyZzEePpTtGgMmKk. Additionally, a B can be placed at the end to indicate powers of 10 instead of 2. For example, . 10mB means blocks of 10000000 bytes while 10m means blocks of 10*2^20 -- 10485760 -- bytes. This is mutually exclusive with the -h option.

--color[=when]

--colour[=when]

Display filenames using color on color-capable terminals. when is an optional argument that determines when to display color output.

Possible values for when are:

always

yes

force

Always use color.

auto

tty

if-tty

Use color if a terminal is present.

no

never

none

Never use color. This is the default

See the Color Output section of this manual page for information on how to control the output colors.

--file-type

Display a suffix after a file depending on it's type, similar to the -F option, except * is not appended to executable files.

--si

Display human scaled sizes similar to the -h option, except values are repeatedly divided by 1000 instead of 1024. The last option --si or -h determines the divisor used.

--time-style style

Display times using the specified style. This does not effect the times displayed for extended attributes (-%).

Use the default locale format for old and new files. This is the default.

+FORMAT

Use a custom format. Values are the same as described in strftime(3C). If a NEWLINE appears in the string, the first line is used for older files and the second line is used for newer files. Otherwise, the given format is used for all files.

/usr/bin/ls

-F

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 (=). Follows symlinks named as operands.

--file-type

Marks entries as with -F with the exception of executable files. Executable files are not marked. Follows symlinks named as operands.

Specifying more than one of the options in the following mutually exclusive
pairs is not considered an error: -C and -l (ell), -m and
-l (ell), -x and -l (ell), -@ and -l (ell). The -l option
overrides the other option specified in each pair.

Specifying more than one of the options in the following mutually exclusive
groups is not considered an error: -C and -1 (one), -H and
-L, -c and -u, and -e and -E, and -t and -S. The
last option specifying a specific timestamp (-c, -u, -% atime , -% crtime, -% ctime,
and -% mtime) determines the timestamps used for sorting or in long format listings.
The last option -t, -S, or -U determines the sorting behavior.

/usr/xpg4/bin/ls

-F

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 (=). Follows symlinks named as operands.

--file-type

Marks entries as with -F with the exception of executable files. Executable files are not marked. Follows symlinks named as operands.

Specifying more than one of the options in the following groups of
mutually exclusive options is not considered an error: -C and -l (ell),
-m and -l (ell), -x and -l (ell), -@ and -l (ell),
-C and -1 (one), -H and -L, -c and -u, -e and
-E, -t and -S and -U. The last option specifying a specific timestamp
(-c, -u, -% atime , -% crtime, -% ctime, and -% mtime) determines the timestamps used
for sorting or in long format listings. The last -t, -S, or
-U option determines the sorting behavior.

/usr/xpg6/bin/ls

-F

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 (=). Does not follow symlinks named as operands unless the -H or -L option is specified.

--file-type

Marks entries as with -F with the exception of executable files. Executable files are not marked. Does not follow symlinks named as operands unless the -H or -L option is specified.

Specifying more than one of the options in the following mutually exclusive
pairs is not considered an error: -C and -l (ell), m and
-l(ell), -x and -l (ell), -@ and -l (ell), -C and -1
(one), -H and --L, -c and -u, -e and -E, -t and
-S and -U. The last option specifying a specific timestamp (-c, -u,
-% atime , -% crtime, -% ctime, and -% mtime) determines the timestamps used for sorting
or in long format listings. The last -t, -S, or -U option
determines the sorting behavior.

Operands

The following operand is supported:

file

A path name of a file to be written. If the file specified is not found, a diagnostic message is output on standard error.

Color Output

If color output is enabled, the environment variable LS_COLORS is checked.
If it exists, its contents are used to control the colors used
to display filenames. If it is not set, a default list
of colors is used. The format of LS_COLORS is a colon separated list
of attribute specifications. Each attribute specification is of the format

filespec=attr[;attr..]

filespec is either of the form *.SUFFIX, for example, *.jar or *.Z,
or one of the following file types:

no

Normal file

fi

Regular file

di

Directory

ln

Symbolic link

pi

FIFO or named pipe

so

Socket

do

Door file

bd

Block device

cd

Character device

ex

Execute bit (either user, group, or other) set

po

Event port

st

Sticky bit set

or

Orphaned symlink

sg

setgid binary

su

setuid binary

ow

world writable

tw

Sticky bit and world writable

attr is a semicolon delimited list of color and display attributes which
are combined to determine the final output color. Any combination of attr
values can be specified. Possible attr values are:

00

All attributes off (default terminal color)

01

Display text in bold

04

Display text with an underscore

05

Display text in bold

07

Display text with foreground and background colors reversed

08

Display using concealed text.

One of the following values can be chosen. If multiple values are
specified, the last specified value is used.

30

Set foreground to black.

31

Set foreground to red.

32

Set foreground to green.

33

Set foreground to yellow.

34

Set foreground to blue.

35

Set foreground to magenta (purple).

36

Set foreground to cyan.

37

Set foreground to white.

39

Set foreground to default terminal color.

One of the following can be specified. If multiple values are specified,
the last value specified is used.

40

Set foreground to black.

41

Set foreground to red.

42

Set foreground to green.

43

Set foreground to yellow.

44

Set foreground to blue.

45

Set foreground to magenta (purple).

46

Set foreground to cyan.

47

Set foreground to white.

49

Set foreground to default terminal color.

On some terminals, setting the bold attribute causes the foreground colors to
be high-intensity, that is, brighter. In such cases the low-intensity yellow is
often displayed as a brown or orange color.

At least one attribute must be listed for a file specification.

The appropriate color codes are chosen by selecting the most specific match,
starting with the file suffixes and proceeding with the file types until
a match is found. The no (normal file) type matches any file.

Usage

See largefile(5) for the description of the behavior of ls when encountering
files greater than or equal to 2 Gbyte ( 231 bytes).

Examples

Example 1 Viewing File Permissions

The following example shows how to display detailed information about a file.

% ls -l file.1
-rw-r--r-- 1 gozer staff 206663 Mar 14 10:15 file.1

The permissions string above (-rw-r--r--) describes that the file owner has read
and write permissions, the owning group has read permissions, and others have
read permissions.

The following example shows how to display detailed information about a directory.

% ls -ld test.dir
drwxr-xr-x 2 gozer staff 2 Mar 14 10:17 test.dir

The permissions string above (drwxr-xr-x) describes that the directory owner has read,
write, and search permissions, the owning group has read and search permissions,
and others have read and search permissions.

Another example of listing file permissions is as follows:

% ls -l file.2
-rw-rwl--- 1 gozer staff 206663 Mar 14 10:47 file.2

The permissions string above (-rw-rwl---) describes that the file owner has read
and write permissions, the owning group has read and write permissions, and
the file can be locked during access.

Example 2 Displaying ACL Information on Files and Directories

The following example shows how to display verbose ACL information on a
ZFS file.

The following example prints the names of all files in the current
directory, including those that begin with a dot (.), which normally do
not print:

example% ls -a

Example 4 Providing File Information

The following example provides file information:

example% ls -aisn

This command provides information on all files, including those that begin with
a dot (a), the i-number, the memory address of the i-node associated
with the file—printed in the left-hand column (i); the size (in blocks)
of the files, printed in the column to the right of the
i-numbers (s); finally, the report is displayed in the numeric version of
the long list, printing the UID (instead of user name) and GID
(instead of group name) numbers associated with the files.

When the sizes of the files in a directory are listed, a
total count of blocks, including indirect blocks, is printed.

Environment Variables

See environ(5) for descriptions of the following environment variables that affect the
execution of ls: LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_TIME, LC_MESSAGES, NLSPATH, and TZ.

COLUMNS

Determines the user's preferred column position width for writing multiple text-column output. If this variable contains a string representing a decimal integer, the ls utility calculates how many path name text columns to write (see -C) based on the width provided. If COLUMNS is not set or is invalid, 80 is used. The column width chosen to write the names of files in any given directory is constant. File names are not be truncated to fit into the multiple text-column output.

LS_COLORS

Determines the coloring scheme used when displaying color output. If not set and color output is specified, a default scheme is used. If TERM is not set, no color output is used.

TERM

Determine the terminal type. If this variable is unset or NULL, no color output is generated regardless of the value of the --color option.

Notes

The total block count is incorrect if there are hard links among
the files.

The sort order of ls output is affected by the locale and
can be overridden by the LC_COLLATE environment variable. For example, if LC_COLLATE
equals C, dot files appear first, followed by names beginning with upper-case letters,
then followed by names beginning with lower-case letters. But if LC_COLLATE equals
en_US.ISO8859-1, then leading dots as well as case are ignored in determining
the sort order.