ls(1)

ls [OPTION]... [FILE]...

지정한 [FILE] (디렉토리 또는 파일 - 미설정 시에는 현재 작업 디렉토리)에 대한 파일 목록 및 속성 등을 출력하는 명령어 입니다. ls -a -l 처럼 옵션들을 여러개로 나열하거나 ls -al 처럼 -는 한번쓰고 나머지는 붙여쓰는 식으로 사용할 수 있습니다.

 

 

ls에 대해서 아무런 argument가 없으면 아래와 같이 현재 디렉토리에 대한 파일 또는 디렉토리 목록을 띄어쓰기로 출력합니다.

$ ls 

결과>
file1.txt file2.txt

이를 기준으로 옵션이 설정되면 어떻게 되는 지를 확인하도록 하겠습니다.

 

OPTION

-a 또는 --all
    : .으로 시작되는 파일명들도 표시함 (즉, 모두 표시함)
    : UNIX / LINUX에서 파일명이나 디렉토리명이 .으로 시작하면 숨겨진 파일입니다.
    : UNIX / LINUX에서 hidden 파일 옵션이 별도로 없습니다.
    
$ ls -a

결과
.  ..  .bash_profile file1.txt  file2.txt
-A 또는 --almost-all
    : 현재 디렉토리(.)와 부모 디렉토리(..)을 제외하고 .으로 시작되는 파일명은 표시함
    : UNIX / LINUX에서 파일명이나 디렉토리명이 .으로 시작하면 숨겨진 파일입니다.
    : UNIX / LINUX에서 hidden 파일 옵션이 별도로 없습니다.
    
$ ls -A

결과
.bash_profile  file1.txt  file2.txt
--author
    : -l option과 함께 사용할 경우에 각 파일에 저작자 표시를 합니다.


$ ls -l
결과
-rw-r--r-- 1 user1 group1 5 oct 10 11:31 file1.txt

$ls -l --author
결과
-rw-r--r-- 1 user1 group1 user1 5 oct 10 11:31 file1.txt
-b, --escape
    : 화면에 보이지 않는 문자(nongraphic character)에 대해서 C언어 style로 출력합니다.

파일명에 Space등이 있는 경우 예)
$ ls 
file name.txt

$ls -b
file\ name.txt
--block-size=SIZE
    : -l과 함께 사용할 경우에 사용하며 파일 크기에 대한 단위를 설정합니다.
    : SIZE의 값은 K, M, G, T, P, Y 
    
    ex). 
       --block-size=K : Kilo bytes
       --block-size=M : Mega bytes 
       ......
-B, --ignore-backups
    : ~문자가 끝에 붙은 backup 파일은 출력하지 않습니다.
 -c 
     : 가장 최근에 변경된 파일부터 출력합니다. (ctime)

    -lt 와 같이 사용시
        : -lt와 같습니다.

    -l 과 같이 사용시 
        : sorting시에 파일 이름(사전식), 최근파일 

    -l 없이 사용시
         : 가장 최근에 변경된 파일부터 이름만 출력됩니다.
 -C 
     : 다른 출력형식은 무시되고 파일명만 출력됩니다.
       (ls 에 option이 아무것도 없는 것과 같음)
--color[=WHEN]
    : 파일의 종류나 속성에 따라서 색상을 표시할 지 여부를 설정합니다.

--color 
    : --color=always와 같습니다.

--color=always
    : 항상 color로 표시됩니다. (terminal 또는 파일로 redirect되더라도 color로...)

--color=auto
    : terminal로 출력될 때에는 color로 표시되고, 그렇지 않은 경우는 never와 같습니다.

--color=never
    : 항상 color로 표시되지 않습니다.
-d, --directory
    : . 만 출력됩니다.
-D 또는 --dired
    : Emacs의 dired mode로 형태로 출력됩니다.
-f
    : 숨은 파일을 포함한 전체 파일명을 sorting없이 출력합니다.
    : -ls와 --color option은 무시됩니다.
-F, --classify
    : 파일의 뒤에 속성에 따라서 */=>@| 문자가 붙을 수 있습니다.
    : 예를들면, 실행가능파일 뒤에 *, 디렉토리 뒤에 / 등
--file-type
    : 실행파일 뒤에 *가 붙이 않는다는 것을 제외하고는 -F와 같습니다.
--format=WORD
    : WORD값에 따라 출력을 형태를 설정합니다

--format=across
    : -x option과 같습니다.

--format=commas
    : -m option과 같습니다.

--format=horizontal
    : -x option과 같습니다.

--format=long
    : -l option과 같습니다.

--format=single-column
    : -1 option과 같습니다. (숫자 1)

--format=verbos
    : -l option과 같습니다.

--format=vertical
    : -C option과 같습니다. 
--full-time
    : -l option처럼 출력되지만, 출력 시간을 매우 상세하게 출력합니다.
    : 년월일시분초 및 nano초와 표준시 기준 시간차까지 표시합니다.
-g
    : -l 처럼 표시되지만 owner 정보는 빼고 출력합니다. (group정보는 표시)
--group-directories-first
    : directory부터 먼저 출력하고 file을 출력합니다.
    : --sort option과 사용 가능하나 
      --sort=none 또는 -U option가 사용하면 --group-directories-first option은 무시됩니다.
-G, --no-group
    : -l option처럼 출력하나 group이름은 표시 되지 않습니다.
-h, --human-readable
    : -s나 -s와 함께 사용가능하며 인간이 쉽게 읽을 수 있는 K, M, G, T, P, Y 등의 단위로 표시됩니다.
--si 
    : -h와 비슷하나 단위가 1024의 제곱이 아닌 1000의 제곱으로 환산됩니다.
-H 또는 --dereference-command-line
    : command line에 symbolic links 출력
--dereference-command-line-symlink-to-dir
    : follow each command line symbolic link that points to a directory
--hide=PATTERN
    : do not list implied entries matching shell PATTERN (overridden by -a or -A)
--indicator-style=WORD
    : 목록 출력시에 WORD값에 따라 파일 또는 디렉토리 끝에 특수 문자가 붙습니다.
    
--indicator-style=none
    : (default) 아무것도 안붙습니다.

--indicator-style=slash
    : 디렉토리 뒤에 /가 붙습니다. -p option과 같음

--indicator-style=file-type
    : 디렉토리(/) 또는 symbolic link(@) 뒤에 특수 문자가 붙습니다.
    : --file-type option과 같음

--indicator-style=classify
    : -F option과 같으며 실행파일/디텍토리/symbolic link 등을 구분하는 모든 종류의 특수문자가 붙습니다.
-i 또는 --inode
    : 각각의 파일명 앞에 inode값을 출력합니다. 
    : inode는 파일 시스템(mount)별로 각 파일에 OS가 부여한 Unique 번호
-k 또는 --kibibytes
    : -s와 함께 사용하며, 1024바이트 단위로 파일에 할당된 block 크기
-l
    : 파일에 대한 상세 정보를 출력합니다.
    : 파일유형, 권한, hard link count, owner, group, 크기, 수정일시 파일명 등

예제)
$ ls -l file1.txt
-rw-r--r-- 1 user1 group1 5 oct 10 11:31 file1.txt

1. 파일 유형 (첫번째 문자)
  - : 일반 파일
  d : 디렉토리
  l : symbolic link
  b : block device
  c : character device
  s : socket file

2. 권한 부분: r: 읽기, w: 쓰기, x: 실행(directory는 x가 search 권한임 즉, 그 디렉토리 내로 들어갈 수 있는지)
  rw-r--r-- 
  rw- (앞3자리) : file 소유자의 권한 (읽기/쓰기 권한있음, 실행권한 없음 실행 권한 x)
  r-- (중3자리) : file의 소유자가 속한 group 사용자들의 접근권한
  r-- (뒤3자리) : 그룹에 소속되지 않은 other 사용자의 접근권한
  rw-r-r--의 의미는 파일 소유자만 수정/삭제 및 읽기 가능, 나머지는 모두 읽기만 가능 

3. 하드링크(Hard link count)
  1  
    하드링크는 ln 명령어를 통해서 2개의 이상의 파일명을 갖는 공유 파일을 만들 수 있는 데
    이 하드링크의 갯수입니다.

4. owner (파일 소유자)
  user1
    파일 owner는 파일의 소유자로 chmod 등으로 권한을 변경할 수 있습니다.

5. group (소유자가 소속된 그룹)
  group1
    소유자가 소속된 그룹에 함께 소속된 사용자를 말하며 이 group1의 권한이 권한부분의 중3자리입니다.

6. 파일 크기
  5
    실제 파일의 크기를 바이트 단위로 표현합니다.
    
7. 최종변경 일시
  oct 10 11:31
    파일을 생성하거나 수정이 발생한 최종 일시입니다.

8. 파일명/디렉토리명
  file1.txt
-L 또는 --dereference
    : symbolic link를 표시할 때에 symbolic link 자신만 표시되고 
      참조하고 있는 파일 정보는 표시하지 않습니다.
-m
    : 파일 목록을 CSV형태로 출력합니다. (comma separated value)
-n 또는 --numeric-uid-gid
    : -l과 똑같은 기능이나 user, group을 이름이 아닌 숫자(user id, group id)로 표시합니다.
-N, --literal
    : 이름을 출력할 때에 따옴표 없이 출력
-o
    : -l처럼 상세히 출력하지만 group 정보는 빼고 출력합니다.
-p
    : directory이름 뒤에 /를 붙여서 출력합니다. (--indicator-style=slash와 같음)
-q 또는 --hide-control-chars
    : 출력이 불가능한 문자(ongraphic characters)를 ?로 표시합니다.
--show-control-chars
    : show nongraphic characters as-is 
      (the default, unless program is 'ls' and output is a terminal)
-Q 또는 --quote-name
    : 파일명/디렉토리명의 앞뒤에 따옴표(")를 붙입니다.
--quoting-style=WORD
    : WORD의 값에 따라 파일명/디렉토리명의 출력 형식을 지정합니다.

--quoting-style=literal
    : 있는 그대로 표시함

--quoting-style=locale
    : `이름' 형식으로 표시됨

--quoting-style=locale
    : `이름' 형식으로 표시됨

--quoting-style=shell
    : 볼수 없는 문자(space 등)가 포함된 경우 '이름'로 표시함 (작은 따옴표)
    
--quoting-style=shell-always
    : 항상 '이름'으로 표시됨 (항상 작은 따옴표)
    
--quoting-style=escape
    : 안보이는 문자가 있는 경우 \가 붙음

--quoting-style=c
    : 항상 "이름" 형식으로 출력합니다. 
-r 또는 --reverse
    : 출력 순서를 sorting된 역순으로 출력합니다.
-R 또는 --recursive
    : 하위 디렉토리도 모두 뒤져서 출력합니다. 
-s, --size
    : 파일의 크기를 할당된 block 크기로 출력합니다.
-S
    : 파일의 크기가 큰 파일부터 작은 파일 순서로 출력합니다.
--sort=WORD
    : WORD의 기준에 따라 sorting합니다.

--sort=none
    : -U option과 같으며 sorting하지 않습니다.

--sort=size
    : -S option과 같으며 크기가 큰것부터 출력합니다.

--sort=time
    : -t option과 같으며 최근 수정된 파일부터 출력합니다.

--sort=version
    : -v option과 같습니다.

--sort=extension
    : -X와 같으며 확장자 순서대로 출력합니다.
--time=WORD
    : WORD값에 따라서 다른 시간을 출력합니다. (-l과 함께 사용)

--time=atime
--time=access
--time=use
    : -u option과 같으며 마지막으로 읽거나 변경한 시간을 출력합니다.

--time=ctime
--time=statu
    : -c와 같으며 최종변경 시간을 출력합니다. (default) 
--time-style=TIME_STYLE
    : -l option과 함께 사용하며 시간/날자 format을 결정합니다.

    TIME_STYLE은 full-iso, long-iso, iso, locale 가 있습니다.
-t
    : 최종 변경시간 순서대로 sorting합니다. (최근 변경 파일 우선)
-T 또는 --tabsize=COLS
    : 각 항목을 출력하는 tab size를 8 대신 다른 값으로 변경합니다. 
 -u
     : -lt와 함꼐 사용하면 access time으로 sorting하고 access time을 보여줍니다.
     : -l과 사용하면 이름으로 sorting하고 시간을 access time을 보여줍니다.
     : 그 외에는 access time이 가장 최근인 순서대로 출력합니다. 
-U
    : soring없이 출력합니다. (즉, 디렉토리 엔트리에 등록된 순서대로)
-v
    : natural sort of (version) numbers within text
-w 또는 --width=COLS
    : set output width to COLS.  0 means no limit
-x
    : list entries by lines instead of by columns
-X
    : 확장자명으로 soring합니다.
-Z 또는 --context
    : print any security context of each file
-1
    : 1줄에 1개의 파일명만 출력합니다. 
--help 
    : ls 명령어에 대한 도움말 출력
--version
    : ls 명령어의 version 정보를 출력합니다. 

 

FILE

정보를 출력할 파일 또는 디렉토리명.

(입력이 없으면 현재 디렉토리입니다.)

 

 

EXIT Status

0 
    : 정상 종료

1
    : 하위 디텍토리에 접근할 수 없다든지 약간의 문제가 있는 경우

2 
    : 심각한 문제 발생 (파라미터를 잘못 사용하거나 하여 아예 실행이 안되는 경우)

 

 


활용 예제

 

 

1. 현재 디렉토리의 숨겨진 파일을 제외한 모든 파일에 대한 상세 조회

$ ls -l

 

 

2. 현재 디렉토리의 숨겨진 파일을 포함한 모든 파일 상세 조회

$ ls -al

 

3. 특정 파일 또는 특정 디렉토리 상세 목록 조회

$ ls -al mydir

 

4. 현재 디렉토리의 파일(디렉토리) 최종 변경 일시가 최근 순으로 정렬 (최근 → 오래된 시간순)

$ ls -lt

 

5. 현재 디렉토리의 파일(디렉토리) 최종 변경 일시가 오래된 순으로 정렬(오래된 최근 시간순)

$ ls -ltr

 

6. 현재 디렉토리의 파일(디렉토리)에 대해서 하위 디렉토리까지 전체 

$ ls -lR

 

7. 파일의 크기를 사용자가 쉽게 알 수 있는 킬로, 메가, 기가 바이트로 표시

$ ls -lh

 

 


ls 구현시 필요한 API

   - 파일의 속성을 얻는 함수 : stat(2) lstat(2)  

   - 날짜 정보 표시 : ctime(3)

   - 디렉토리의 정보를 얻는 함수 : scandir(3)  

     등의 함수들을 주요 기능으로 활용하면 구현 가능합니다. 

블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요