{{위키데이터 속성 추적}}
{{소문자}}
{{소프트웨어 정보
| name                   = ls
| logo                   = 
| screenshot             = OpenBSD Long File Listing.png
| screenshot size        = 
| caption                = [[OpenBSD]] 5.3에서 "<code>ls -l</code>"를 통한 긴 파일을 나열한 모습
| developer              = [[AT&T 벨 연구소]]
| released               = 
| latest release version = 
| latest release date    = 
| operating system       = [[멀틱스]], [[유닉스]], [[유닉스 계열]]
| genre                  = [[명령어]]
| license                = [[coreutils]]: [[GNU GPL|GNU GPL v3]]
| website                = 
}}
'''<code>ls</code>'''는 [[POSIX]] 및 [[단일 유닉스 규격]]에 규정되어 있는 [[유닉스 계열]] [[운영 체제]]의 [[명령어 (컴퓨팅)|명령어]] 가운데 하나로, ‘list segments’의 약자이며, [[컴퓨터 파일|파일]]의 목록을 표시하는 기능을 수행하는 명령어이다. [[도스]]에서의 <code>[[dir]]</code>과 유사한 명령어이다.

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

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

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

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

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

 <span style="background:#000000; color:#c0c0c0"> brw-r--r--    1 unixguy staff 64,  64 Jan 27 05:52 <span style="color:yellow     ">block         </span>
  crw-r--r--    1 unixguy staff 64, 255 Jan 26 13:57 <span style="color:#ffff00    ">character     </span>
  -rw-r--r--    1 unixguy staff     290 Jan 26 14:08 <span style="color:#ff00ff    ">compressed.gz </span>
  -rw-r--r--    1 unixguy staff  331836 Jan 26 14:06 <span style="color:#ff00ff    ">data.ppm      </span>
  drwxrwx--x    2 unixguy staff      48 Jan 26 11:28 <span style="color:#0000ff    ">directory     </span>
  -rwxrwx--x    1 unixguy staff      29 Jan 26 14:03 <span style="color:#00ff00    ">executable    </span>
  prw-r--r--    1 unixguy staff       0 Jan 26 11:50 <span style="color:#ffffaa    ">fifo          </span>
  lrwxrwxrwx    1 unixguy staff       3 Jan 26 11:44 <span style="color:#00ffaa    ">link</span> -> <span style="color:blue">dir   </span>
  -rw-rw----    1 unixguy staff     217 Jan 26 14:08 regularfile   </span>

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

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

== 사용의 예 ==
다음의 예는, 두 개의 옵션 (<code>-l</code>, <code>-F</code>)를 파라미터로 지정하여 <code>ls</code>를 각각 실행시켰을 때의 다른 출력 결과이다.
<syntaxhighlight lang="console">
$ 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*
</syntaxhighlight>
여기서, <code>fred</code> 사용자의 홈 디렉터리에는 <code>drafts</code>라고 하는 디렉터리와 <code>edition-32</code>라는 이름의 보통 [[컴퓨터 파일|파일]], 여기에 <code>edit</code>라는 이름의 실행 가능한 파일이 존재함을 확인할 수 있다. <code>ls</code>는 사용자(user), 사용자의 소속 그룹(group), 파일의 소유자 외의 다른 사용자들(other)이 파일에 대해 어떤 권한(퍼미션)을 가지고 있는가를 표시하기 위해 몇 가지 문자를 채용하고 있다.

퍼미션 부분의 최초의 문자는 파일의 종류를 가리킨다.
{| class="wikitable"
!style="text-align: left"|문자
!style="text-align: left"|의미
|-
|<code>-</code>||보통 파일
|-
|<code>b</code>||블록 장치
|-
|<code>c</code>||문자열 장치
|-
|<code>d</code>||디렉터리
|-
|<code>l</code>||심볼릭 링크
|-
|<code>p</code> 또는 <code>=</code>||named pipe/FIFO
|-
|<code>s</code>||소켓
|-
|}
첫 번째 문자 이후의 9개의 문자열은 각각 3문자씩의 세 묶음으로 나뉘어 있으며, 3문자에는 <code>-</code> 또는 각각 <code>r</code>, <code>w</code>, <code>x</code>가 표시될 수 있어, 각각 읽기, 쓰기, 실행의 권한을 가지고 있음을(<code>-</code>의 경우 없음을) 나타낸다. 첫 번째 묶음은 파일의 소유자인 사용자, 두 번째 묶음은 사용자가 속한 그룹, 세 번째는 다른 사용자들을 의미한다. 위의 예에서, <code>fred</code> 사용자는 <code>edition-32</code>을 읽고 쓸 수는 있으나, 실행은 할 수 없음을 알 수 있다. <code>editors</code> 그룹의 소속 사용자는 그 밖의 다른 사용자와 마찬가지로, <code>edition-32</code>을 읽을 수 있으나, 파일을 쓰거나 실행시키는 작업은 할 수 없다.

== 같이 보기 ==
* [[Chown]]
* [[Chgrp]]
* [[Du (유닉스)]]
== 외부 링크 ==
* {{언어링크|en}} {{man|1|ls}}
* {{언어링크|en}} {{man|cu|ls|SUS}}
* [http://minnie.tuhs.org/UnixTree/V5/usr/source/s1/ls.c.html ls.c] AT&T Ver. 5 UNIX의 ls 소스 코드.
* [https://web.archive.org/web/20100718181921/http://ftp.gnu.org/pub/gnu/coreutils/ GNU ls 소스 코드]

{{유닉스 명령어}}

[[분류:표준 유닉스 프로그램]]
[[분류:유닉스 SUS2008 유틸리티]]