유닉스(리눅스) ls 명령어와 옵션

2018.03.05 07:00







ls 명령어는 유닉스나 리눅스에서 제일 처음 접하는 명령어다. 


ls 명령어는 현재 디렉토리의 파일에 대한 리스트를 보여준다. 


예전 도스 시절 컴퓨터를 시작한 사람은 dir 명령어나 dir/w가 생각나려나?




제일 많이 사용하는 옵션은 아마도 -a와 -l .


그 외 중요하고 많이 사용하는 옵션을 다음과 같다

(유닉스인 AIX 콘쉘(ksh) 기준으로 테스트했음.)



-a : 숨김파일(.으로 시작) 포함하여 디렉토리의 모든 항목 표시


-d : 디렉토리 정보만 표시(-l과 함께 사용해야)


-F : 파일이 디렉토리인 경우 /(슬래시), 파일이 실행 가능한 경우 *(별표), 파일이 소켓인 경우 =(등호), 파일이 선입선출법(FIFO)인 경우 |(파이프), 기호 링크인 경우 @를 각 파일 이름의 뒤에 추가


-l  : 각 파일의 모드, 링크 수, 소유자, 그룹, 크기(바이트), 최종 수정 시간을 표시합니다. 파일이 특수 파일인 경우 크기 필드에는 주 장치 번호와 부 장치 번호가 있습니다. 최종 수정 시간이 6개월 이전보다 더 과거이면 시간 필드가 월 날짜 연도 형식으로 표시되는 반면, 6개월 이내에 수정된 파일의 경우에는 시간 필드가 월 날짜 시간 형식으로 표시


-m : 쉼표로 구분


-r : 역순으로


-R : 하위의 서브디렉토리의 내용도 순차적으로 표시. 


-s : 킬로바이트 단위로


-t : 최종 수정 시간을 기준으로


-u : 최종 수정 시간 대신 최종 액세스 시간(-t 또는 -ㅣ과 함께 사용해야)




이제 몇 가지 실제 사용 예시를 살펴보자. 


먼저 -l 옵션을 사용했을 때 나타나는 항목에 대한 내용이다.  




1
2
3
4
5
[dev:/] ls -al
drwxrwxr-x   15 root     adm            4096  3월 14일 2017  adm
lrwxrwxrwx    1 bin      bin               8 10월 15일 2009  bin -> /usr/bin
-rw-r--r--    1 root     system         6083 12월 26일 22:00 bosinst.data
-rw-r-----    1 root     system         7812 12월  8일 2016  core
cs




제일 앞 부분에 해당하는 첫 글자는 다음의 의미가 있다. 

(위 그림에서는 d, l, - 해당)



항목 설명

d 디렉토리

b 블록 특수 파일

c 문자 특수 파일

l 기호 링크

p 선입선출(FIFO) 특수 파일

s 로컬 소켓

- 일반 파일



첫 줄의 adm 은 디렉토리라는 의미이고

두번째 줄은 링크파일임을 의미한다. 



그 다음 rwx 문자는 권한(permission)에 대한 의미이다. 



ㅇ 파일 퍼미션에 관한 내용은 이전 블로그글 참조


2017/06/06 - [Linux, Unix] - 유닉스(리눅스) 파일권한(퍼미션)




그 다음에 나오는 숫자의 의미에 대해서 설명하지 않는 책들이 많던데 숫자는 파일에 대한 하드링크 수를 보여준다. 

숫자가 3이라면 하드링크된 동일한 파일이 3개 존재한다는 의미이고, 심볼링크는 해당하지 않는다.

 


아래 그림을 보자. 처음에 만든 test01.txt 파일은 숫자가 1이다. 

심볼릭 링크로 test02.txt를 만들었지만 숫자는 여전히 1이다



1
2
3
4
5
6
7
8
9
10
11
12
13
14
[dev:/home/test01] ls -alrt
total 8
drwxr-xr-x   32 bin      bin            4096  3월  2일 09:39 ..
-rw-r--r--    1 root     system            0  3월  2일 16:16 test01.txt
drwxr-xr-x    2 root     system          256  3월  2일 16:16 .
 
[dev:/home/test01] ln -s test01.txt test02.txt
 
[dev:/home/test01] ls -alrt
total 8
drwxr-xr-x   32 bin      bin            4096  3월  2일 09:39 ..
-rw-r--r--    1 root     system            0  3월  2일 16:16 test01.txt
lrwxrwxrwx    1 root     system           10  3월  2일 16:16 test02.txt -> test01.txt
drwxr-xr-x    2 root     system          256  3월  2일 16:16 .
cs




test02.txt를 지우고 하드링크로 다시 만들면 숫자가 2로 변한다. 




1
2
3
4
5
6
7
8
[dev:/home/test01] ln test01.txt test02.txt
 
[dev:/home/test01] ls -alrt
total 8
drwxr-xr-x   32 bin      bin            4096  3월  2일 09:39 ..
-rw-r--r--    2 root     system            0  3월  2일 16:16 test02.txt
-rw-r--r--    2 root     system            0  3월  2일 16:16 test01.txt
drwxr-xr-x    2 root     system          256  3월  2일 16:18 .
cs




디렉토리의 경우 모든 디렉토리는 적어도 하드 링크 두 개를 포함한다. 

상위 디렉토리에 대한 링크(..)과 특수 파일(.)로 표시되는 현재 디렉토리에 대한 하드링크이다. 



1
2
3
4
5
6
7
[dev:/home/test01] ls -ld /home/test01
drwxr-xr-x    2 root     system          256  3월  2일 16:34 /home/test01
 
[dev:/home/test01] mkdir testdir01 testdir02 testdir03
 
[dev:/home/test01] ls -ld /home/test01
drwxr-xr-x    5 root     system          256  3월  2일 16:35 /home/test01
cs




위 그림에서 보면 /home/test01 디렉토리는 파일만 가지고 있기 때문에 처음에 2로 보이지만

testdir01 testdir02 testdir03 세개의 디렉토리를 만들고 난 후 5로 변경된 것을 알 수 있다.






-d 옵션  위에서 사용된 예처럼 -l 플래그와 함께 사용하면 해당 디렉토리 자체에 대한 정보를 보여준다. 

(-d 플래그 없이 디렉토리명만 쓸 경우 그 디렉토리 안의 파일들을 보여준다)



1
2
3
4
5
6
7
8
9
10
[dev:/] ls -dl /var
drwxr-xr-x   38 bin      bin            4096  2월 13일 11:29 /var
 
 
[dev:/] ls -l /var
total 88
drwxr-xr-x    4 root     sys             256  8월 17일 2016  DynamicLinkManager
drwxrwxr-x    3 root     sys             256  8월 17일 2016  HBaseAgent
drwxr-xr-x    7 bin      bin            4096 10월 14일 2009  LicenseUseManagement
......
cs




-F 옵션  디렉토리와 파일, 실행가능한 파일, 링크 파일의 구분을 용이하도록 해준다. 


디렉토리인 경우 /(슬래시), 파일이 실행 가능한 경우 *(별표), 링크인 경우 @를 각 파일 이름의 뒤에 추가해서 보여준다. 



1
2
3
4
5
6
7
8
9
10
11
12
13
[dev:/ls -lF
total 51608
drwxr-xr-x    2 root     system         4096 11월 22일 14:19 errpt/
drwxr-xr-x   16 esaadmin system         4096 10월 14일 2009  esa/
-rw-r--r--    1 root     system        14016 12월 26일 22:00 image.data
-rw-r--r--    1 root     system      3490922  3월  7일 2011  ip.txt
-rw-r--r--    1 root     system      3838300  4월 19일 2011  ip_dev.txt
lrwxrwxrwx    1 bin      bin               8 10월 15일 2009  lib@ -> /usr/lib/
-rwxr-xr-x    1 ora9208  dba           13330  4월 21일 2017  mpsimp.sh*
-rwxr-xr-x    1 root     system          825 12월  1일 2011  msys.sh*
-rwxr-x--x    1 root     system         4721 10월 30일 2009  pm.sh*
-rw-r--r--    1 root     system       345140  6월  1일 2010  port.txt
lrwxrwxrwx    1 root     system           21 10월 15일 2009  unix@ -> /usr/lib/boot/unix_64*
cs



-m 옵션은 파일명을 쉼표로 구분해서 보여준다. 


1
2
3
4
[dev:/var] ls -m
DynamicLinkManager, HBaseAgent, LicenseUseManagement, aacct, adm, cnsystem, ct, dt, ecc, empty, esa, ha, hacmp,
ifor, lib, locks, log, lost+found, msgs, ncs, news, opt, perf, preserve, rclog_backup, samba, security, seslog_backup,
snapp, spool, ssl, statmon, suma, tmp, ttylog_backup, websm, yp
cs





이상으로 많이 사용되는 ls 명령어의 옵션에 대해서 정리해보았다. 


ls 명령어 사용시 ls -a -l 처럼 따로 사용하거나 ls -al 처럼 각각의 옵션을 여러개 붙여서 사용해도 관계없다. -al이나 -la 처럼 순서가 바뀌어도 관계없다


(단 서로 상충하는 옵션을 사용할 경우 제일 마지막에 쓰인 옵션이 적용된다)




처음 시스템을 배울 때 다른 사람들은 ls에 어떤 옵션을 붙여서 사용하는지 유심히 본 적이 있다. 


ls -al 처럼 간단하게 사용하는 사람도 있었지만 ls -alF 로 사용하는 사람도 있고, 


리눅스를 많이 사용한 사람은 습관처럼 ll을 누르는 사람도 많다. 

(ll은 alias로 ls -l --color=auto





개인적으로는 ls -alrt 옵션을 많이 사용한다. 


-al은 모든 파일을 자세히

-t는 시간 순으로 표시되도록 

-r은 역순으로 보여준다. 


-alrt 옵션을 사용하면 가장 최근에 작성하거나 생성된 파일이 제일 마지막에 나타난다. 

(즉, 리스트가 쭉~~ 나타나고 프롬프트가 떨어졌을 때 바로 위)




자신의 개성에 맞는 옵션을 찾는 것도 유닉스나 리눅스를 배우는 재미일지도 모르겠다. ^^

또루아빠 Linux, Unix , , , , , , , ,

  1. Blog Icon

    비밀댓글입니다