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, as a separate package for Microsoft Windows as part of the UnxUtils collection of native Win32 ports of common GNU Unix-like utilities,
or as part of ASCII's MSX-DOS2 Tools for MSX-DOS version 2.

The numerical computing environments MATLAB and GNU Octave include an ls 
function with similar functionality.

In other environments, such as DOS, OS/2, and Microsoft Windows, similar functionality is provided by the dir command.

History 
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".  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.

Behavior 
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.
 -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, FreeBSD 4.5 in 2002, and Solaris 9 in 2002.

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:
 GNU ls uses the --color option; it checks the Unix file type, the file permissions and the file extension and uses its own database to control colors maintained using dircolors.
 FreeBSD ls uses the -G option; it checks only the Unix file type and file permissions and uses the termcap database
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

Sample usage 
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.

See also 
 stat (Unix)
 chown
 chgrp
 du (Unix)
 mdls
 User identifier (Unix)
 Group identifier (Unix)
 List of Unix commands
 Unix directory structure

References

External links 

 
 
 
 
 
 
 
 
 GNU ls source code (as part of coreutils)
 ls at the LinuxQuestions.org wiki

Multics commands
Standard Unix programs
Unix SUS2008 utilities
Plan 9 commands
Inferno (operating system) commands
IBM i Qshell commands
ls는 POSIX 및 단일 유닉스 규격에 규정되어 있는 유닉스 계열 운영 체제의 명령어 가운데 하나로, ‘list segments’의 약자이며, 파일의 목록을 표시하는 기능을 수행하는 명령어이다. 도스에서의 dir과 유사한 명령어이다.

역사 
ls는 AT&T의 유닉스 초기 버전부터 존재하던 명령어였다. 이 명칭은 멀틱스에 존재하고 있었던 비슷한 커맨드에서 계승되었다. 현재 사용되고 있는 ls는 자유 소프트웨어 재단에서 구현된 판과 FreeBSD, OpenBSD, NetBSD 및 다윈 등의 BSD 계열 유닉스 시스템에서 사용되고 있는 판 등이 있으며, 양쪽 다 자유 소프트웨어이며 오픈 소스이기도 하다.

작동 형태 
유닉스 계열의 운영 체제에서는 현재 사용자가 작업을 수행하고 있는 파일 시스템상의 위치를 나타내는 ‘현재 디렉터리’(current directory)라는 개념이 존재한다. (이 개념은 도스 등에서도 존재한다.) ls를 옵션 없이 기동시킬 경우, 현재 디렉터리에 있는 파일의 목록이 표시되게 된다. 또한, 디렉터리 또는 파일의 목록을 매개 변수로 지정하였을 경우, 지정된 파일 또는 디렉터리 안에 소속되어 있는 파일의 목록이 표시된다.

이때, 명칭이 ‘.’로 시작되는 파일은 보통은 표시되지 않으며, 이런 종류의 파일 또한 표시하기 위해서는 -a를 옵션으로 지정해야 한다.

옵션을 지정하지 않고 ls를 실행시켰을 경우, 파일 이름만 표시되나, 이 경우 파일의 종류와 크기, 퍼미션 등의 부가 정보가 표시되지 않는다. ls에는 표시의 형식을 변경할 수 있는 옵션들이 많이 존재하고 있다.

파일 종류를 가리키는 색을 사용하는 옵션을 적용하면 다음과 같이 출력된다:

  brw-r--r--    1 unixguy staff 64,  64 Jan 27 05:52 block         
  crw-r--r--    1 unixguy staff 64, 255 Jan 26 13:57 character     
  -rw-r--r--    1 unixguy staff     290 Jan 26 14:08 compressed.gz 
  -rw-r--r--    1 unixguy staff  331836 Jan 26 14:06 data.ppm      
  drwxrwx--x    2 unixguy staff      48 Jan 26 11:28 directory     
  -rwxrwx--x    1 unixguy staff      29 Jan 26 14:03 executable    
  prw-r--r--    1 unixguy staff       0 Jan 26 11:50 fifo          
  lrwxrwxrwx    1 unixguy staff       3 Jan 26 11:44 link -> dir   
  -rw-rw----    1 unixguy staff     217 Jan 26 14:08 regularfile

옵션 
명령어 ls 뒤에 한 칸을 띄우고 옵션을 입력하여 출력형태를 바꿀 수 있다. 모든 파일과 폴더를 출력하라는 -a, 목록의 각 항목에 대해 수정시간, 파일 용량 등의 세부적인 내용을 제시하라는 -l등의 옵션이 있다.

옵션 없이 ls를 사용하면 단순 형식으로 파일을 보여준다. 일반적인 옵션은 다음과 같다:
 -l 롱 포맷.
 -f 정렬 안 함. 많은 수의 파일을 포함하고 있는 디렉터리에 유용함.
 -F 파일의 본질을 나타내는 문자 추가.
 -a “.”으로 시작하는 이름을 포함, 관련 디렉터리의 모든 파일 나열.
 -R 하부 디렉터리를 반복하여 나열. 그러므로 ls -R / 명령은 모든 파일을 나열.
 -d 심볼 링크나 디렉터리에 대한 정보 표시.
 -t 수정 시간에 따라 파일 목록을 나열,
 -h 사람이 인지할 수 있는 형태로 크기를 출력. (예: 1K, 234M, 2G, 등)

사용의 예 
다음의 예는, 두 개의 옵션 (-l, -F)를 파라미터로 지정하여 ls를 각각 실행시켰을 때의 다른 출력 결과이다.
$ pwd
/home/fred
$ ls -l
drwxr--r--   1 fred  editors   4096  drafts
-rw-r--r--   1 fred  editors  30405  edition-32
-r-xr-xr-x   1 fred  fred      8460  edit
$ ls -F
drafts/
edition-32
edit*
여기서, fred 사용자의 홈 디렉터리에는 drafts라고 하는 디렉터리와 edition-32라는 이름의 보통 파일, 여기에 edit라는 이름의 실행 가능한 파일이 존재함을 확인할 수 있다. ls는 사용자(user), 사용자의 소속 그룹(group), 파일의 소유자 외의 다른 사용자들(other)이 파일에 대해 어떤 권한(퍼미션)을 가지고 있는가를 표시하기 위해 몇 가지 문자를 채용하고 있다.

퍼미션 부분의 최초의 문자는 파일의 종류를 가리킨다.

첫 번째 문자 이후의 9개의 문자열은 각각 3문자씩의 세 묶음으로 나뉘어 있으며, 3문자에는 - 또는 각각 r, w, x가 표시될 수 있어, 각각 읽기, 쓰기, 실행의 권한을 가지고 있음을(-의 경우 없음을) 나타낸다. 첫 번째 묶음은 파일의 소유자인 사용자, 두 번째 묶음은 사용자가 속한 그룹, 세 번째는 다른 사용자들을 의미한다. 위의 예에서, fred 사용자는 edition-32을 읽고 쓸 수는 있으나, 실행은 할 수 없음을 알 수 있다. editors 그룹의 소속 사용자는 그 밖의 다른 사용자와 마찬가지로, edition-32을 읽을 수 있으나, 파일을 쓰거나 실행시키는 작업은 할 수 없다.

외부 링크 
  
  
 ls.c AT&T Ver. 5 UNIX의 ls 소스 코드.
 GNU ls 소스 코드

표준 유닉스 프로그램
유닉스 SUS2008 유틸리티