ls(1) DG/UX R4.11MU05 ls(1)
NAME
ls - list contents of directory
SYNOPSIS
ls [-RadeLCxmlnogrtucpFbqisf1%] [names]
ls [ -lpF [ % ] ] [ names ]
DESCRIPTION
For each directory argument, ls lists the contents of the directory;
for each file argument, 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 default format for output redirected to a file is
single column with entries sorted down the column. 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.
On a system with DG/UX information security, there are some apparent
anomalies that may be confusing to the user. They center on the
potentially different behavior between ls and ls -l. The ls command
simply lists the names of files that can be accessed through a
directory. The names of these files are data contained in the
directory itself, and therefore are labeled with the same MAC label
as the directory. A user who has read access to the directory can,
therefore, see these names.
The ls -l command must actually access the attributes of the file.
To do this, the process must have MAC access to that file. Thus, if
the label of the directory being searched is dominated by the
process, but the label of the file is not, then simply issuing the
command ls will list the name of the file, but issuing the command ls
-l will list the name and then complain that the file was not found.
This is correct, but sometimes disconcerting, behavior. Another
interesting behavior is exhibited by ls if an ls -l command is issued
in a directory which contains a multilevel directory which you do not
have DAC access to. In this case, ls will indicate that permission
is denied to the multilevel directory. This again is correct
behavior for this release, since both MAC and DAC access to the
multilevel parent directory are required to access (in this case
stat(2)) a hidden directory.
The ls command has the following options:
-R Recursively list subdirectories encountered.
-a List all entries, including those that begin with a dot (.),
which are normally not listed.
-d If an argument is a directory, list only its name (not its
contents); often used with -l to get the status of a
directory.
-L If an argument is a symbolic link, list the file or directory
the link references rather than the link itself.
-C Multi-column output with entries sorted down the columns.
This is the default format for output directed to a terminal.
-x Multi-column output with entries sorted across rather than
down the page.
-m Stream output format; files are listed across the page,
separated by commas.
-l List in long format, giving mode, number of links, owner,
group, size in bytes, and time of last modification for each
file (see below). If the file is a special file, the size
field instead contains the major and minor device numbers
rather than a size. If the file is a symbolic link, the
filename is printed followed by ``->'' and the pathname of the
referenced file.
-e The same as -l on a system without DG/UX information security.
On a system with DG/UX information security, in addition to
the information displayed with -l, a "+" is also displayed
after the file permission bits if the file has an extended
ACL. If the file has an extended ACL, the group permission
bits are in fact the mask bits. Use getacl(1) on a system with
DG/UX information security to see the true group permissions
if it is indicated that a file has an extended ACL.
-n The same as -l, except that the owner's UID and group's GID
numbers are printed, rather than the associated character
strings.
-o The same as -l, except that the group is not printed.
-g The same as -l, except that the owner is not printed.
-r Reverse the order of sort to get reverse alphabetic or oldest
first as appropriate.
-t Sort by time stamp (latest first) instead of by name. The
default is the last modification time. (See -u and -c.)
-u Use time of last access instead of last modification for
sorting (with the -t option) or printing (with the -l option).
-c Use time of last modification of the i-node (file created,
mode changed, etc.) for sorting (-t) or printing (-l).
-p Put a slash (/) after each filename if the file is a
directory.
-F Put a slash (/) after each filename if the file is a
directory, an asterisk (*) if the file is an executable, and a
commercial at character (@) if the file is a symbolic link.
-b Force printing of non-printable characters to be in the octal
\ddd notation.
-q Force printing of non-printable characters in file names as
the character question mark (?).
-i For each file, print the i-node number in the first column of
the report.
-s Give size in blocks, including indirect blocks, for each
entry.
-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.
-1 Print one entry per line of output. This is the default
format for output redirected to a file.
-% When the -F or -p options are also given, put a percent (%)
after each filename if that file is a control point directory.
When the -l option is also given, put a percent (%) in the
first character of the mode for each file that is a control
point directory (instead of d). This option is useful only
when used in combination with -l, -p, or -F.
The mode printed under the -l option consists of ten characters. The
first character may be one of the following:
d the entry is a directory;
l the entry is a symbolic link;
s the entry is a UNIX domain socket;
b the entry is a block special file;
c the entry is a character special file;
p the entry is a fifo (a.k.a. ``named pipe'') special file;
- 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.
ls -l (the long list) prints its output as follows:
-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). Finally, the dash and
letters tell you that user, group, and others have permissions to
read, write, and execute part2.
The execute (x) symbol here 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
l mandatory locking occurs during access (the set-group-ID
bit is on and the group execution bit is off)
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 bit is on and the
user execution bit is off)
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)
For user and group permissions, the third position is sometimes
occupied by a character other than x or -. s also may 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
owning the file during execution is used, for example, during login
when the login program must have an effective UID of root to perform
many of the steps required to set up the user's process, but then
need to change the process UID to that of the user logging in.
In the case of the sequence of group permissions, l may 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 may be occupied by t or T.
These refer to the state of the sticky bit and execution permissions.
International Features
ls can process directory names and filenames containing characters
from supplementary code sets. Multi-column output can be displayed
correctly using the -C and -x options.
With the -b and -q options, ls considers all characters from
supplementary code sets to be printable.
EXAMPLES
An example of a file's permissions is:
-rwxr--r--
This describes a file that is readable, writable, and executable by
the user and readable by the group and others.
Another example of a file's permissions is:
-rwsr-xr-x
This describes a file that is readable, writable, and executable by
the user, readable and executable by the group and others, and allows
its user-ID to be assumed, during execution, by the user presently
executing it.
Another example of a file's permissions is:
-rw-rwl---
This describes a file that is readable and writable only by the user
and the group and can be locked during access.
An example of a command line:
ls -a
This command prints the names of all files in the current directory,
including those that begin with a dot (.), which normally do not
print.
Another example of a command line:
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.
FILES
/etc/passwd user IDs for ls -l and ls -o
/etc/group group IDs for ls -l and ls -g
/usr/share/lib/terminfo/?/* terminal information database
SEE ALSO
chmod(1), find(1).
NOTES
Unprintable characters in file names may confuse the columnar output
options.
When the sizes of the files in a directory are listed, a total count
of blocks, including indirect blocks, is printed.
The total block count will be incorrect if there are hard links among
the files.
Licensed material--property of copyright holder(s)