리눅스 ls명령어
-. 주로 사용되는 ls의 옵션
-R : 지정한 디렉토리이하에 있는 하부디렉토리와 파일들을 모두 포함한다.(Recursive)
-r : 출력결과를 내림차순으로 정렬(Descending)
-S : 파일사이즈가 가장 큰것부터 순서대로 나열
-l : 좀더 자세하게 출력한다.(파일형태,사용권한,하드링크번호,owner이름,group이름,파일크기,시간 등)
-a : 경로안에 모든 파일을 출력 (.으로 시작하는 파일도 출력해준다)
-A : -a옵션을 사용한것과 같지만 [.]과 [..]은 제외한다.
-h : 파일사이즈를 용량단위(Megabyte,Gigabyte)를 붙여서 출력해준다.(-l옵션과 함께 사용해야함)
-n : -l옵션과 비슷하나 소유자에 대하여 uid,gid를 보여준다.
-1(숫자1) : 한행에 한 파일씩 출력
-X : 파일 확장자순으로 출력
-U : 디스크 저장순서대로 출력
-L : 심볼릭링크파일을 일반파일형태로 출력
-c : -l옵션사용시 표시되는 시간을 ctime으로 표시한다.
-u : -l옵션사용시 표시되는 시간을 atime으로 표시한다.
-t : 표시되는 시간을 기준으로 정렬
-c옵션을 사용하면 ctime이 표시된다.
즉, -lct라는 옵션을 사용하면 ctime으로 정렬되고 -lut라는 옵션을 사용하면 atime으로 정렬된다.
-i : 파일의 inode값과 함께 출력
-. 파일과 디렉토리의 크기순서대로 확인(-S옵션)
서버관리자들은 종종 서버내에 존재하는 많은 파일들 중에 제일 큰 파일을 찾아야 할 필요성이 있다.
즉, 파일시스템 사용량이 꽉찼을때 불필요한 파일들을 빨리 찾아서 삭제해야 할 경우도 있을 것이고, 갑작스러운 서버장애로 인하여 예전의 core파일이 아직 서버내에 남아 있어서 큰 공간을 차지하고 있는 경우도 있을 것이며, 알지못하는 특정데몬의 로그파일 관리를 하지 않아서 긴급하게 삭제해야하는 경우도 있을 것이며, 또한 메일큐디렉토리나 메일스풀디렉토리를 관리하지 못한결과로 인하여 서버가 다운되거나 안정되지 못하는 경우를 야기하게 될수 있다.
ex)
[root@localhost ~]#ls -lhRS /sbin
/sbin:
total 33M
-rwxr-xr-x 1 root root 2.3M May 31 2008 nash
-r-xr-xr-x 1 root root 1.4M May 25 2008 lvm.static
-rwxr-xr-x 1 root root 1.2M Mar 22 2007 cryptsetup
-rwxr-xr-x 1 root root 1.2M Jan 7 2007 dump
-rwxr-xr-x 1 root root 1.2M Jan 7 2007 restore
생략...
사용한 옵션을 보면 /sbin디렉토리와 /sbin하위디렉토리에 있는 모든 파일일을 자세히 보여주며 크기는 용량단위를 붙이고 크기순으로 오름차순정렬한것이다.
※ 파일시스템 사용량을 체크하려면 du명령어를 사용하면 된다. du -sk 또는 du -sh명령어로 파일시스템의 현재 사용량을 확인할수 있다.
-. 파일정보 자세히 표시하기(-l옵션)
디렉토리에 존재하는 파일들의 보다 자세한 정보들을 확인하고자 할때 -l 옵션을 사용한다. 파일의 퍼미션,소유자,소유그룹,파일사이즈,파일변경일시 등을 확인할수 있다.
ex)
[root@localhost ~]#ls -l /bin
total 7248
-rwxr-xr-x 1 root root 8984 May 25 2008 alsacard
-rwxr-xr-x 1 root root 21240 May 25 2008 alsaunmute
-rwxr-xr-x 1 root root 7440 May 25 2008 arch
생략...
※ 파일명을 기준으로 오름차순정렬
-. 파일명 기준으로 내림차순 정렬하기(-r옵션)
-l옵션을 사용시 파일명을 기준으로 오름차순정렬되는것을 거꾸로 출력한다고 보면 된다.
즉, -r옵션을 사용하여 파일명 기준으로 오름차순을 거꾸로 출력하여 파일명 기준 내림차순이 되는것이다.
ex)
[root@localhost ~]#ls -lr /bin
total 7248
-rwxr-xr-x 3 root root 62864 May 29 2008 zcat
lrwxrwxrwx 1 root root 8 Nov 12 19:47 ypdomainname -> hostname
lrwxrwxrwx 1 root root 2 Nov 12 19:47 view -> vi
생략...
-. 특정디렉토리의 모든 파일 확인하기(-a옵션)
일반적으로 -a나 -A옵션을 사용하지 않는다면 [.]으로 시작되는 파일명은 출력되지 않는다.
시스템상으로 중요한 파일이거나 숨김파일이라는 뜻인데, 서버보안점검시에는 [.]으로 시작하는 모든 파일을 확인해야 하므로 -a옵션을 사용하여 모든 파일을 확인한다.
ex)
[root@localhost ~]#ls -al
total 332
drwxr-x--- 21 root root 4096 Dec 29 03:26 .
drwxr-xr-x 27 root root 4096 Dec 28 21:51 ..
-rw------- 1 root root 1063 Nov 12 20:04 anaconda-ks.cfg
-rw------- 1 root root 12355 Dec 29 03:26 .bash_history
-rw-r--r-- 1 root root 23 Dec 2 20:17 .bash_logout
생략...
※ 위에서 보면 [.] 과 [..]이 보이는데 [.]은 현재 디렉토리를 의미하며 [..]은 상위디렉토리를 의미한다.
-A옵션을 사용하면 [.]과 [..]은 출력되지 않는다.
-. 파일명 끝부분에 파일형태를 표시하는 특수문자 표시하기(-F옵션)
특정 파일의 리스트를 ls명령어로 출력할때 파일의 종류별로 끝부분에 표시할수 있도록 해주는 옵션이 -F옵션이다.
>> 파일종류별 표시형태
일반파일 : 아무표시도 하지 않는다.
실행파일 : "*"문자가 파일명 끝에 붙는다.
디렉토리 : "/"문자가 파일명 끝에 붙는다.
심볼릭링크 : "@"문자가 파일명 끝에 붙는다.
FIFO파일 : "|"문자가 파일명 끝에 붙는다.
소켓파일 : "="문자가 파일명 끝에 붙는다.
ex)
[root@localhost ~]#ls -alF
total 332
drwxr-x--- 21 root root 4096 Dec 29 03:26 ./
drwxr-xr-x 27 root root 4096 Dec 28 21:51 ../
-rwxr-xr-x 1 root root 1063 Nov 12 20:04 anaconda-ks.cfg*
-rw------- 1 root root 12355 Dec 29 03:26 .bash_history
-rw-r--r-- 1 root root 23 Dec 2 20:17 .bash_logout
-rw-r--r-- 1 root root 241 Dec 20 06:45 .bash_profile
-rw-r--r-- 1 root root 717 Dec 29 03:26 .bashrc
-rw-r--r-- 1 root root 100 Jan 6 2007 .cshrc
drwxr-xr-x 2 root root 4096 Nov 12 20:10 Desktop/
생략...
#anaconda-ks.cfg파일은 실행파일이 아니나 확인을 위하여 임의로 실행파일형태로 변경하였다.
출력결과를 보면 anaconda-ks.cfg파일은 실행파일형태이므로 파일명 끝부분에 *이 붙는다.
Desktop은 디렉토리 이므로 파일명뒤쪽에 / 문자가 붙은걸 확인할수 있다.
-. 파일의 UID와 GID표시하기(-n옵션)
-l옵션을 사용시 소유자와 소유그룹을 확인할수 있는데, 이때 -n옵션을 이용하여 소유자 대신 소유자의 UID 소유그룹대신 소유그룹의 GID를 표시해준다.
[root@localhost ~]#ls -l #소유자와 소유그룹명으로 표시
total 144
-rwxr-xr-x 1 root root 1063 Nov 12 20:04 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Nov 12 20:10 Desktop
생략...
[root@localhost ~]#ls -n #소유자의 UID와 소유그룹의 GID표시
total 144
-rwxr-xr-x 1 0 0 1063 Nov 12 20:04 anaconda-ks.cfg
drwxr-xr-x 2 0 0 4096 Nov 12 20:10 Desktop
생략...
-. 한줄에 한 파일씩만 나열하기(-1옵션(숫자1))
다른 옵션없이 ls명령어만 사용시 가로정렬된 파일명만 출력되는데, 세로정렬된 파일명만 출력할 필요성이 있다면 -1(숫자1) 옵션을 사용하면 된다.
ex)
[root@localhost ~]#ls -1 #숫자1이다!!
anaconda-ks.cfg
Desktop
install.log
install.log.syslog
rpm_list.txt
생략...
-. 서브디렉토리내의 파일들도 함께 표시하기(-R옵션)
특정디렉토리내에 존재하는 디렉토리안에 있는 파일까지 확인할수 있다.
주로 보안점검시 사용되며, -l 옵션이나 -S옵션, -a옵션과 함께 사용된다.
ex)
[root@localhost ~]#ls -R
.:
anaconda-ks.cfg icmp_echo_ignore_all~ install.log.syslog scsrun.log typescript
Desktop install.log rpm_list.txt systest youngjae
./Desktop:
./systest:
systest.py
생략...
-. 파일 크기별 내림차순정렬(-S옵션)
-S옵션으로 디스크사용량 점검시 주로 사용되며, 크기가 큰 파일부터 출력해준다.
ex)
[root@localhost ~]#ls -lS
total 144
-rw-r--r-- 1 root root 53670 Dec 1 20:15 rpm_list.txt
-rw-r--r-- 1 root root 35406 Nov 12 20:04 install.log
-rw-r--r-- 1 root root 8192 Dec 2 21:13 typescript
생략...
파일크기를 보면 가장 높은 파일이 상위에 있음을 확인할수 있다.
-. 파일 크기별 오름차순정렬(-S옵션,-r옵션)
-S옵션과 함께 -r옵션을 사용함으로써 크기가 가장 작은 파일부터 표시할수 있다.
ex)
[root@localhost ~]#ls -lSr
total 144
-rw-r--r-- 1 root root 0 Nov 12 19:45 install.log.syslog
-rw-r--r-- 1 root root 2 Dec 1 21:36 icmp_echo_ignore_all~
-rw-r--r-- 1 root root 199 Nov 12 20:08 scsrun.log
생략...
-. 파일 확장사순으로 정렬하여 표시(-X)
-X옵션을 사용하여 파일의 확장자순으로 정렬할수 있다.
확장자가 없는 파일이 가장 먼저 출력되며, 그다음 확장자가 있는 파일을 정렬하여 출력한다.
ex)
[root@localhost ~]#ls -lX
total 144
drwxr-xr-x 2 root root 4096 Nov 12 20:10 Desktop
-rw-r--r-- 1 root root 2 Dec 1 21:36 icmp_echo_ignore_all~
drwxr-xr-x 2 root root 4096 Nov 20 16:52 systest
-rw-r--r-- 1 root root 8192 Dec 2 21:13 typescript
drwxr-xr-x 8 root root 4096 Dec 29 01:19 youngjae
-rwxr-xr-x 1 root root 1063 Nov 12 20:04 anaconda-ks.cfg
-rw-r--r-- 1 root root 35406 Nov 12 20:04 install.log
-rw-r--r-- 1 root root 199 Nov 12 20:08 scsrun.log
-rw-r--r-- 1 root root 0 Nov 12 19:45 install.log.syslog
-rw-r--r-- 1 root root 53670 Dec 1 20:15 rpm_list.txt
출력내용을 보면 같은확장자끼리 함께있음을 볼수 있다.
-. 디스크저장순서대로 출력(-U옵션)
기본적인 ls의 출력순서는 파일명 오름차순이다.
ls -U옵션을 사용하면 디스크저장순서대로 출력한다.
a1파일부터 a5파일까지 순서대로 생성후 테스트해보았다.
ex)
[root@localhost ~/youngjae/lstest]#ls -l
total 0
-rw-r--r-- 1 root root 0 Dec 29 05:06 a1
-rw-r--r-- 1 root root 0 Dec 29 05:06 a2
-rw-r--r-- 1 root root 0 Dec 29 05:06 a3
-rw-r--r-- 1 root root 0 Dec 29 05:06 a4
-rw-r--r-- 1 root root 0 Dec 29 05:06 a5
[root@localhost ~/youngjae/lstest]#ls -lU
total 0
-rw-r--r-- 1 root root 0 Dec 29 05:06 a4
-rw-r--r-- 1 root root 0 Dec 29 05:06 a5
-rw-r--r-- 1 root root 0 Dec 29 05:06 a1
-rw-r--r-- 1 root root 0 Dec 29 05:06 a2
-rw-r--r-- 1 root root 0 Dec 29 05:06 a3
위에서 보듯이 -U옵션을 사용하면 출력순서가 다름을 알수 있다.
※ 정확히 디스크저장순서가 뭔지 모르겠다.... 파일을 생성한 시간도 아니고, 수정한 시간도 아니다....
-. 심볼릭링크파일을 일반파일 형태로 출력하기(-L)
ls명령어 사용시 심볼릭 링크파일의 기본출력 형식은 "링크파일명" -> "원본파일위치"와 같은 형태로 출력되지만 -L옵션을 사용하면 심볼릭링크파일을 일반파일과 같은 형태로 출력한다.
예를 보면 이해가 쉬울것이다.
ex)
[root@localhost ~/youngjae/lstest]#ls -l
total 0
-rw-r--r-- 1 root root 0 Dec 29 05:15 file01
lrwxrwxrwx 1 root root 6 Dec 29 05:15 file02 -> file01 #file01파일에 심볼릭링크됨을 알수 있다.
[root@localhost ~/youngjae/lstest]#ls -lL
total 0
-rw-r--r-- 1 root root 0 Dec 29 05:15 file01
-rw-r--r-- 1 root root 0 Dec 29 05:15 file02
위에서 보듯이 -L옵션을 사용하면 심볼릭링크 파일이 일반파일처럼 출력되어 심볼릭링크파일인지 확인을 할수 없게 된다.
-. 시간을 기준으로 정렬하여 출력하기(-t,-c,-u옵션)
기본적으로 시간순으로 정렬옵션은 -t이다.
여기에 어떤 시간을 표현할것인가의 옵션인 -c와 -u옵션에 따라서 정렬한 시간을 정하게 된다.
-t옵션은 ls -l명령어를 사용시 표시되는 시간을 기준으로 가장 최근에 변경한 파일을 상단으로 두고 정렬한다.
-. 명령어당 파일의 시간변경시점
명령어 |
atime |
mtime |
ctime |
touch |
O |
O |
O |
vi로 편집 |
O |
O |
O |
cat |
O |
X |
X |
chmod로 권한변경 |
X |
X |
O |
실행시 |
O |
X |
X |
>> atime을 기준으로 정렬하기(-ltu)
access time, 파일에 접근했던 가장 최근시간이 atime값이 된다.
속성변경을 제외한 거의 모든경우, 파일의 atime값이 최신화된다.
디렉토리의 경우 디렉토리안에 파일을 확인한 시간이 되겠다.
ex)
[root@localhost ~]#ls -ltu
total 152
drwxr-xr-x 9 root root 4096 Dec 29 07:36 youngjae
-rw-r--r-- 1 root root 7158 Dec 29 05:00 ls.help
-rw-r--r-- 1 root root 0 Dec 29 04:41 test1
drwxr-xr-x 2 root root 4096 Dec 29 04:28 Desktop
drwxr-xr-x 2 root root 4096 Dec 29 04:28 systest
-rw-r--r-- 1 root root 53670 Dec 20 04:45 rpm_list.txt
-rw-r--r-- 1 root root 199 Dec 2 20:58 scsrun.log
-rw-r--r-- 1 root root 8192 Dec 2 20:57 typescript
-rwxr-xr-x 1 root root 1063 Dec 2 20:57 anaconda-ks.cfg
-rw-r--r-- 1 root root 2 Dec 2 20:55 icmp_echo_ignore_all~
-rw-r--r-- 1 root root 35406 Dec 2 20:55 install.log
-rw-r--r-- 1 root root 0 Nov 12 19:45 install.log.syslog
>>mtime을 기준으로 정렬하기(-lt)
modification time, 파일의 내용을 수정했을경우, cat으로 읽기만 했을경우는 수정이 아니므로 해당이 안된다.
디렉토리의 경우 디렉토리내의 파일을 추가,수정,삭제한 시간이 되겠다.
ex)
[root@localhost ~]#ls -lt
total 152
drwxr-xr-x 9 root root 4096 Dec 29 05:05 youngjae
-rw-r--r-- 1 root root 7158 Dec 29 04:45 ls.help
-rw-r--r-- 1 root root 0 Dec 29 04:41 test1
-rw-r--r-- 1 root root 8192 Dec 2 21:13 typescript
-rw-r--r-- 1 root root 2 Dec 1 21:36 icmp_echo_ignore_all~
-rw-r--r-- 1 root root 53670 Dec 1 20:15 rpm_list.txt
drwxr-xr-x 2 root root 4096 Nov 20 16:52 systest
drwxr-xr-x 2 root root 4096 Nov 12 20:10 Desktop
-rw-r--r-- 1 root root 199 Nov 12 20:08 scsrun.log
-rwxr-xr-x 1 root root 1063 Nov 12 20:04 anaconda-ks.cfg
-rw-r--r-- 1 root root 35406 Nov 12 20:04 install.log
-rw-r--r-- 1 root root 0 Nov 12 19:45 install.log.syslog
>>ctime을 기준으로 정렬하기(-ltc)
creation time, 해당파일의 속성이 변경된 경우이다.
chmod나 chown명령어를 이용하여 파일의 권한 및 소유자를 변경하는등의 내용은 수정하지 않고 속성만 변경하는 경우 ctime만 최신화된다.
ex)
[root@localhost ~]#ls -ltc
total 152
drwxr-xr-x 9 root root 4096 Dec 29 05:05 youngjae
-rw-r--r-- 1 root root 7158 Dec 29 04:45 ls.help
-rw-r--r-- 1 root root 0 Dec 29 04:41 test1
-rwxr-xr-x 1 root root 1063 Dec 29 04:09 anaconda-ks.cfg
-rw-r--r-- 1 root root 8192 Dec 2 21:13 typescript
-rw-r--r-- 1 root root 2 Dec 1 21:36 icmp_echo_ignore_all~
-rw-r--r-- 1 root root 53670 Dec 1 20:15 rpm_list.txt
drwxr-xr-x 2 root root 4096 Nov 20 16:52 systest
drwxr-xr-x 2 root root 4096 Nov 12 20:10 Desktop
-rw-r--r-- 1 root root 199 Nov 12 20:08 scsrun.log
-rw-r--r-- 1 root root 35406 Nov 12 20:04 install.log
-rw-r--r-- 1 root root 0 Nov 12 20:04 install.log.syslog
-. 시간표시를 보다 자세한 형식으로 출력(--full-time옵션)
파일에 대한 시간표시를 초이하단위까지 표시하기 위해서 --full-time옵션을 함께 사용해준다.
ex)
[root@localhost ~/youngjae/lstest]#ls -lc --full-time
total 8
-rwxrwxrwx 1 root root 11 2012-12-29 06:51:04.000000000 +0900 f1
-rw-r--r-- 1 root root 0 2012-12-29 05:46:21.000000000 +0900 f2
-rw-r--r-- 1 root root 0 2012-12-29 05:46:30.000000000 +0900 f3
위에서 볼수 있듯이 ctime의 시간이 초단위이하까지 표시됨을 확인할수 있다.
-. 파일들의 inode값과 함께 출력(-i)
파일리스트를 표시할때 파일의 앞에 색인번호(inode값)을 표시할수 있다.
다른이름으론 index number라고도 하며, 일반적인경우 inode값을 표시할 필요가 거의 없지만, 파일시스템에 관한 작업을 할때에는 파일의 색인번호를 확인해야할 경우가 종종있다.
파일을 표시할때 inode값을 함께 출력할때는 -i옵션을 주면 된다.
ex)
[root@localhost ~/youngjae/lstest]#ls -li
total 8
637366 -rwxrwxrwx 1 root root 11 Dec 29 10:43 f1
637363 -rw-r--r-- 1 root root 0 Dec 29 10:43 f2
637364 -rw-r--r-- 1 root root 0 Dec 29 10:43 f3
파일앞에 inode값이 붙음을 확인할수 있다.
-. 모든 파일을 대상으로 용량별로 정렬하여 출력하는 내용을 파일로 저장하기
리눅스에서 화면의 출력내용을 파일로 저장할수 있는 > [filename]명령어를 이용한다.
> 사용옵션
S = 파일사이즈로 정렬
h = 용량단위를 붙여서 출력
R = 모든 서브디렉토리함께 출력
a = 숨김파일함께 출력
l = 모든 정보 표시
ex)
[root@localhost ~]#ls -alhRS > homelist_list
cat 이나 vi more명령어로 homelist_list파일을 확인해보면 출력결과를 확인할수 있다.
-. ls명령어의 timestamps출력형태 변형
--time-style=full-iso
--full-time
-rw------- 1 root root 970 2012-12-31 02:33:12.000000000 +0900 anaconda-ks.cfg
--time-style=long-iso
-rw------- 1 root root 970 2012-12-31 02:33 anaconda-ks.cfg
--time-style= iso
-rw------- 1 root root 970 12-31 02:33 anaconda-ks.cfg
--time-style=locale
-rw------- 1 root root 970 Dec 31 02:33 anaconda-ks.cfg
참조 : 리눅스 서버관리 실무 바이블 3.0(박성수 저)
[출처] Linux, ls명령어|작성자 Youngjae
'Programming > Linux' 카테고리의 다른 글
ftp 명령문 (0) | 2013.01.17 |
---|---|
SSH란? (0) | 2012.12.31 |
vi 명령어 (0) | 2012.12.18 |
for 문을 이용한 shell script (0) | 2012.12.18 |