Original author(s) | coreutils: Richard Stallman and David MacKenzie |
---|---|
Developer(s) | Various open-source and commercial developers |
Written in | C |
Operating system | Multics, Unix, Unix-like, Plan 9, Inferno, MSX-DOS |
Type | Command |
License |
coreutils:
GPLv3+ BusyBox: GPL-2.0-only Toybox: 0BSD Plan 9: MIT License |
In
computing, ls
is a
command to list
computer files and directories in
Unix and
Unix-like operating systems. It is specified by
POSIX and the
Single UNIX Specification.
It is available in the EFI shell, [1] as a separate package for Microsoft Windows as part of the UnxUtils collection of native Win32 ports of common GNU Unix-like utilities, [2] or as part of ASCII's MSX-DOS2 Tools for MSX-DOS version 2. [3]
The
numerical computing environments
MATLAB and
GNU Octave include an ls
function with similar functionality.
[4]
[5]
In other environments, such as
DOS,
OS/2, and
Microsoft Windows, similar functionality is provided by the
dir
command.
An ls
utility appeared in the first version of
AT&T
UNIX, the name inherited from a similar command in
Multics also named 'ls', short for the word "list".
[6]
[7]
[8] ls
is part of the
X/Open Portability Guide since issue 2 of 1987. It was inherited into the first version of POSIX.1 and the
Single Unix Specification.
[9]
Unix and
Unix-like operating systems maintain the idea of a
working directory. When invoked without
arguments, ls
lists the files in the working directory. If a directory is specified as an argument, the files in that directory are listed; if a file is specified, that file is listed. Multiple directories and files may be specified.
In many Unix-like systems, names starting with a
dot (.
) are
hidden. Examples are .
, which refers to the working directory, and ..
, which refers to its parent directory. Hidden names are not shown by default. With -a
, all names, including all hidden names, are shown. Using -A
shows all names, including hidden names, except for .
and ..
. File names specified explicitly (for example ls .secret
) are always listed.
Without options, ls
displays names only.
The different implementations have different options, but common options include:
-l
Long format, displaying
Unix file types, permissions, number of
hard links, owner, group, size, last-modified date-time and name. If the modified date is older than 6 months, the time is replaced with the year. Some implementations add additional flags to permissions. The file type can be one of 8 characters: -
, regular file; d
, directory; l
,
symbolic (soft) link; n
,
network files; s
,
socket; p
,
named pipe (FIFO); c
,
character special file; b
,
block special file.-h
Output sizes in human readable format (e.g., 1K (
kilobytes), 234M (
megabytes), 2G (
gigabytes)). This option is not part of the POSIX standard, although implemented in several systems, e.g., GNU coreutils in 1997,
[10] FreeBSD 4.5 in 2002,
[11] and Solaris 9 in 2002.
[12]Additional options controlling how items are displayed include:
-R
Recursively list items in subdirectories.-t
Sort the list by modification time (default sort is alphabetically).-u
Sort the list by last access time.-c
Sort the list by last attribute (status) change time.-r
Reverse the order, for example most recent time last.--full-time
Show times down to the second and millisecond instead of just the minute.-1
One entry per line.-m
Stream format; list items across the page, separated by commas.-g
Include group but not owner.-o
Include owner but not group (when combined with -g
both group and owner are suppressed).-d
Show information about a directory or symbolic link, rather than the contents of a directory or the link's target.-F
Append a "/" to directory names and a "*" to executable files.It may be possible to highlight different types of items with different colors. This is an area where implementations differ:
ls
uses the --color
option;
[13] it checks the Unix file type, the file permissions and the file extension and uses its own database to control colors maintained using
dircolors.ls
uses the -G
option; it checks only the Unix file type and file permissions and uses the
termcap database
[14]When the option to use color to indicate item types is selected, the output might look like:
-rw-r--r-- 1 tsmitt nregion 26650 Dec 20 11:16 audio.ogg brw-r--r-- 1 tsmitt nregion 64 Jan 27 05:52 bd-block-device crw-r--r-- 1 tsmitt nregion 255 Jan 26 13:57 cd-character-device -rw-r--r-- 1 tsmitt nregion 290 Jan 26 14:08 image.png drwxrwxr-x 2 tsmitt nregion 48 Jan 26 11:28 di-directory -rwxrwxr-x 1 tsmitt nregion 29 Jan 26 14:03 ex-executable -rw-r--r-- 1 tsmitt nregion 0 Dec 20 09:39 fi-regular-file lrwxrwxrwx 1 tsmitt nregion 3 Jan 26 11:44 ln-soft-link -> dir lrwxrwxrwx 1 tsmitt nregion 15 Dec 20 10:57 or-orphan-link -> mi-missing-link drwxr-xrwx 2 tsmitt nregion 4096 Dec 20 10:58 ow-other-writeable-dir prw-r--r-- 1 tsmitt nregion 0 Jan 26 11:50 pi-pipe -rwxr-sr-x 1 tsmitt nregion 0 Dec 20 11:05 sg-setgid srw-rw-rw- 1 tsmitt nregion 0 Jan 26 12:00 so-socket drwxr-xr-t 2 tsmitt nregion 4096 Dec 20 10:58 st-sticky-dir -rwsr-xr-x 1 tsmitt nregion 0 Dec 20 11:09 su-setuid -rw-r--r-- 1 tsmitt nregion 10240 Dec 20 11:12 compressed.gz drwxrwxrwt 2 tsmitt nregion 4096 Dec 20 11:10 tw-sticky-other-writeable-dir
The following example demonstrates the output of the command:
$ ls -l
drwxr--r-- 1 fjones editors 4096 Mar 2 12:52 drafts
-rw-r--r-- 3 fjones editors 30405 Mar 2 12:52 edition-32
-r-xr-xr-x 1 fjones bookkeepers 8460 Jan 16 2022 edit.sh
Each line shows the d
(directory) or -
(file) indicator,
Unix file permission notation, number of
hard links (1 or 3), the file's owner, the file's group, the file size, the modification date/time, and the file name. In the working directory, the owner fjones
has a directory named drafts
, a regular file named edition-32
, and an executable named edit.sh
which is "old", i.e. modified more than 6 months ago as indicated by the display of the year.
┌─────────── file (not a directory)
|┌─────────── read-write (no execution) permissions for the owner
|│ ┌───────── read-only permissions for the group
|│ │ ┌─────── read-only permissions for others
|│ │ │ ┌── number of hard links
|│ │ │ │ ┌── owner
|│ │ │ │ │ ┌── user group
|│ │ │ │ │ │ ┌── file size in bytes
|│ │ │ │ │ │ │ ┌── last modified on
|│ │ │ │ │ │ │ │ ┌── filename
-rw-r--r-- 3 fjones editors 30405 Mar 2 12:52 edition-32
ls
source code (as part of coreutils)ls
at the LinuxQuestions.org wikiOriginal author(s) | coreutils: Richard Stallman and David MacKenzie |
---|---|
Developer(s) | Various open-source and commercial developers |
Written in | C |
Operating system | Multics, Unix, Unix-like, Plan 9, Inferno, MSX-DOS |
Type | Command |
License |
coreutils:
GPLv3+ BusyBox: GPL-2.0-only Toybox: 0BSD Plan 9: MIT License |
In
computing, ls
is a
command to list
computer files and directories in
Unix and
Unix-like operating systems. It is specified by
POSIX and the
Single UNIX Specification.
It is available in the EFI shell, [1] as a separate package for Microsoft Windows as part of the UnxUtils collection of native Win32 ports of common GNU Unix-like utilities, [2] or as part of ASCII's MSX-DOS2 Tools for MSX-DOS version 2. [3]
The
numerical computing environments
MATLAB and
GNU Octave include an ls
function with similar functionality.
[4]
[5]
In other environments, such as
DOS,
OS/2, and
Microsoft Windows, similar functionality is provided by the
dir
command.
An ls
utility appeared in the first version of
AT&T
UNIX, the name inherited from a similar command in
Multics also named 'ls', short for the word "list".
[6]
[7]
[8] ls
is part of the
X/Open Portability Guide since issue 2 of 1987. It was inherited into the first version of POSIX.1 and the
Single Unix Specification.
[9]
Unix and
Unix-like operating systems maintain the idea of a
working directory. When invoked without
arguments, ls
lists the files in the working directory. If a directory is specified as an argument, the files in that directory are listed; if a file is specified, that file is listed. Multiple directories and files may be specified.
In many Unix-like systems, names starting with a
dot (.
) are
hidden. Examples are .
, which refers to the working directory, and ..
, which refers to its parent directory. Hidden names are not shown by default. With -a
, all names, including all hidden names, are shown. Using -A
shows all names, including hidden names, except for .
and ..
. File names specified explicitly (for example ls .secret
) are always listed.
Without options, ls
displays names only.
The different implementations have different options, but common options include:
-l
Long format, displaying
Unix file types, permissions, number of
hard links, owner, group, size, last-modified date-time and name. If the modified date is older than 6 months, the time is replaced with the year. Some implementations add additional flags to permissions. The file type can be one of 8 characters: -
, regular file; d
, directory; l
,
symbolic (soft) link; n
,
network files; s
,
socket; p
,
named pipe (FIFO); c
,
character special file; b
,
block special file.-h
Output sizes in human readable format (e.g., 1K (
kilobytes), 234M (
megabytes), 2G (
gigabytes)). This option is not part of the POSIX standard, although implemented in several systems, e.g., GNU coreutils in 1997,
[10] FreeBSD 4.5 in 2002,
[11] and Solaris 9 in 2002.
[12]Additional options controlling how items are displayed include:
-R
Recursively list items in subdirectories.-t
Sort the list by modification time (default sort is alphabetically).-u
Sort the list by last access time.-c
Sort the list by last attribute (status) change time.-r
Reverse the order, for example most recent time last.--full-time
Show times down to the second and millisecond instead of just the minute.-1
One entry per line.-m
Stream format; list items across the page, separated by commas.-g
Include group but not owner.-o
Include owner but not group (when combined with -g
both group and owner are suppressed).-d
Show information about a directory or symbolic link, rather than the contents of a directory or the link's target.-F
Append a "/" to directory names and a "*" to executable files.It may be possible to highlight different types of items with different colors. This is an area where implementations differ:
ls
uses the --color
option;
[13] it checks the Unix file type, the file permissions and the file extension and uses its own database to control colors maintained using
dircolors.ls
uses the -G
option; it checks only the Unix file type and file permissions and uses the
termcap database
[14]When the option to use color to indicate item types is selected, the output might look like:
-rw-r--r-- 1 tsmitt nregion 26650 Dec 20 11:16 audio.ogg brw-r--r-- 1 tsmitt nregion 64 Jan 27 05:52 bd-block-device crw-r--r-- 1 tsmitt nregion 255 Jan 26 13:57 cd-character-device -rw-r--r-- 1 tsmitt nregion 290 Jan 26 14:08 image.png drwxrwxr-x 2 tsmitt nregion 48 Jan 26 11:28 di-directory -rwxrwxr-x 1 tsmitt nregion 29 Jan 26 14:03 ex-executable -rw-r--r-- 1 tsmitt nregion 0 Dec 20 09:39 fi-regular-file lrwxrwxrwx 1 tsmitt nregion 3 Jan 26 11:44 ln-soft-link -> dir lrwxrwxrwx 1 tsmitt nregion 15 Dec 20 10:57 or-orphan-link -> mi-missing-link drwxr-xrwx 2 tsmitt nregion 4096 Dec 20 10:58 ow-other-writeable-dir prw-r--r-- 1 tsmitt nregion 0 Jan 26 11:50 pi-pipe -rwxr-sr-x 1 tsmitt nregion 0 Dec 20 11:05 sg-setgid srw-rw-rw- 1 tsmitt nregion 0 Jan 26 12:00 so-socket drwxr-xr-t 2 tsmitt nregion 4096 Dec 20 10:58 st-sticky-dir -rwsr-xr-x 1 tsmitt nregion 0 Dec 20 11:09 su-setuid -rw-r--r-- 1 tsmitt nregion 10240 Dec 20 11:12 compressed.gz drwxrwxrwt 2 tsmitt nregion 4096 Dec 20 11:10 tw-sticky-other-writeable-dir
The following example demonstrates the output of the command:
$ ls -l
drwxr--r-- 1 fjones editors 4096 Mar 2 12:52 drafts
-rw-r--r-- 3 fjones editors 30405 Mar 2 12:52 edition-32
-r-xr-xr-x 1 fjones bookkeepers 8460 Jan 16 2022 edit.sh
Each line shows the d
(directory) or -
(file) indicator,
Unix file permission notation, number of
hard links (1 or 3), the file's owner, the file's group, the file size, the modification date/time, and the file name. In the working directory, the owner fjones
has a directory named drafts
, a regular file named edition-32
, and an executable named edit.sh
which is "old", i.e. modified more than 6 months ago as indicated by the display of the year.
┌─────────── file (not a directory)
|┌─────────── read-write (no execution) permissions for the owner
|│ ┌───────── read-only permissions for the group
|│ │ ┌─────── read-only permissions for others
|│ │ │ ┌── number of hard links
|│ │ │ │ ┌── owner
|│ │ │ │ │ ┌── user group
|│ │ │ │ │ │ ┌── file size in bytes
|│ │ │ │ │ │ │ ┌── last modified on
|│ │ │ │ │ │ │ │ ┌── filename
-rw-r--r-- 3 fjones editors 30405 Mar 2 12:52 edition-32
ls
source code (as part of coreutils)ls
at the LinuxQuestions.org wiki