Linux
기본명령어
ls
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Programming
리눅스 기본명령어 - ls #
리눅스에 처음 로그인하게 되면 홈 디렉토리로 이동한다. 홈 디렉토리는 보통 /home/name으로 이루어져 있다. 홈 디렉토리로 이동하게 되면 해당 디렉토리에서 작업을 하거나 내용을 검색하는 작업을 하게 된다. 홈 디렉토리 내에 어떠한 디렉토리나 파일이 있는지 알아야 하는데 이때 사용하는 명령어가 ls 명령어이다. ls 명령어는 list directory contents에서 유래된 명령어로 해당 디렉토리 내에 있는 디렉토리 및 파일을 화면에 출력한다.
$ ls [옵션] [파일/디렉토리]
보통 ls 명령어를 인자 없이 사용하는 경우도 있지만, 대부분은 명령어에 옵션을 사용한다. 인자 없이 사용하면 해당 디렉토리내에 있는 파일과 디렉토리를 쭉 나열하는 수준으로 이름과 파일을 출력하는데 파일인지 디렉토리인지는 보통 색깔로 구분이 되거나 구분이 되지 않는다.
소유권이나 만든 날짜, 용량 등을 확인하려면 ls 명령어 단독으로는 확인할 수 없기 때문에 ls -al과 같이 옵션을 사용한다.
간단하게 ls 명령어의 옵션을 간단히 알아보면 다음과 같다.
- -a 디렉토리 안에 있는 모든 파일과 디렉토리를 보여준다. all
- -l 파일에 대한 정보를 자세하게 보여준다. 사용자의 권한, 소유자 그룹, 크기, 날짜 등을 자세하게 보여준다. list
- -h -l에서 지정한 크기 등을 사람이 읽기 쉽게 변환하여 보여준다. humanize
ls 명령어를 실행하면 다음과 같이 보여진다.
$ ls
DATA1 bin cdrom etc initrd.img lib lost+found mnt proc run snap sys usr vmlinuz
DATA2 boot dev home initrd.img.old lib64 media opt root sbin srv tmp var vmlinuz.old
이 경우 보통 파일의 대소문자 및 알파벳으로 정렬이 되어 출력된다. 이 경우에는 파일의 이름만 표시되기 때문에 세부 내용을 확인할 수가 없다. 그래서 -l 옵션을 같이 사용한다. ls -l와 같이 사용하면 된다.
$ ls -al [디렉토리/파일]
파일 및 디렉토리의 전체 내용을 보여주는 명령어이다. 이 경우에 내용이 많기 때문에 해당 내용이 화면을 지나치는 경우가 많아 주의해야 한다. 즉 먼저 나오는 파일 내용은 맨 위에 있기 때문에 최종에는 보이지 않는다. 보통의 경우에는 아래와 같이 정보를 보여준다. 그러면 total NN과 같이 현재 디렉토리 내 파일의 갯수가 77이라고 알려준다. 파일의 갯수는 하위 디렉토리에 있기 때문에 실제 보여지는 내용과는 차이가 난다.
total 120
drwxr-xr-x 26 root root 4096 8월 9 15:51 .
drwxr-xr-x 26 root root 4096 8월 9 15:51 ..
drwxrwxrwx. 4 503 504 4096 6월 30 13:43 DATA1
drwsrwsrwt 2 root root 4096 6월 30 14:27 DATA2
drwxr-xr-x 2 root root 4096 6월 29 14:54 bin
drwxr-xr-x 3 root root 4096 8월 9 15:51 boot
drwxrwxr-x 2 root root 4096 6월 29 14:43 cdrom
drwxr-xr-x 19 root root 4380 7월 12 15:22 dev
drwxr-xr-x 138 root root 12288 8월 19 05:34 etc
drwxr-xr-x 7 root root 4096 6월 30 09:22 home
lrwxrwxrwx 1 root root 32 8월 9 15:51 initrd.img -> boot/initrd.img-4.4.0-34-generic
lrwxrwxrwx 1 root root 32 7월 16 00:59 initrd.img.old -> boot/initrd.img-4.4.0-31-generic
drwxr-xr-x 22 root root 4096 6월 29 14:54 lib
drwxr-xr-x 2 root root 4096 4월 21 07:07 lib64
drwx------ 2 root root 16384 6월 29 07:33 lost+found
drwxr-xr-x 4 root root 4096 6월 29 15:20 media
drwxr-xr-x 2 root root 4096 4월 21 07:07 mnt
drwxr-xr-x 2 root root 4096 4월 21 07:07 opt
dr-xr-xr-x 258 root root 0 6월 29 16:24 proc
drwx------ 5 root root 4096 6월 29 15:27 root
drwxr-xr-x 31 root root 1040 8월 24 08:25 run
drwxr-xr-x 2 root root 12288 6월 29 20:50 sbin
drwxr-xr-x 2 root root 4096 4월 19 23:31 snap
drwxr-xr-x 2 root root 4096 4월 21 07:07 srv
dr-xr-xr-x 13 root root 0 6월 29 16:24 sys
drwxrwxrwt 11 root root 4096 8월 24 08:17 tmp
drwxr-xr-x 11 root root 4096 4월 21 07:13 usr
drwxr-xr-x 15 root root 4096 6월 30 09:02 var
lrwxrwxrwx 1 root root 29 8월 9 15:51 vmlinuz -> boot/vmlinuz-4.4.0-34-generic
lrwxrwxrwx 1 root root 29 7월 16 00:59 vmlinuz.old -> boot/vmlinuz-4.4.0-31-generic
목록 내용을 보면 일관적으로 내용을 볼 수가 있는데 보통 8~9 정도의 공백으로 분리된 내용을 볼 수 있다.
(1) (2)(3) (4) (5) (6) (7) (8)
drwxr-xr-x 2 root root 4096 6월 29 14:54 bin
자세히 살펴보면 (1)은 10글자로 이루어지는데 첫 글자는 d, l, - 처럼 이루어져 있다. l은 링크, -는 파일을 의미한다. 나머지 9자리는 파일 및 디렉토리의 퍼미션(권한)을 나타낸다. 퍼미션은 rwx, rwx, rwx의 조합인데 공개, 그룹, 권한의 경우와 각 경우별 read, write, execute의 세 가지 경우의 조합이다.
(2)는 하드링크 번호로 링크된 파일의 수를 의미한다. 2라고 쓰여 있으니 2개의 파일이 링크되어 있다. (3)과 (4)는 소유자 및 소유그룹의 이름을 나타내준다. 소유자가 누구인지 소유그룹이 누구인지 확인할 수 있다. (5)는 파일의 크기를 바이트 단위로 나타낸다. 만약 4096 이면 보통 디렉토리이다. 파일의 용량이 커지면 바이트 단위로 표시되기 때문에 해당 내용을 확인하기 어렵다. 그럴 때는 -h 옵션을 추가하면 4.2M, 3.3K와 같이 사람이 쉽게 읽을 수 있도록 변환해준다.
(6)과 (7)은 파일이 만들어진 날짜 및 시간을 나타낸다. 만약 파일이 수정이 되면 수정된 시간이다. (8)은 파일 및 디렉토리의 이름이다.
$ ls -alh [디렉토리/파일]
drwxrwxrwx. 4 503 504 4.0K 6월 30 13:43 DATA1
-h 옵션은 Mb,Gb와 같이 바이트 단위 용량에서 사람이 읽기 쉬운 형태로 변환하여 출력한다.
$ ls -al | more
보통 파일 정보를 상세하기 보기 위해서 ls -al 명령어를 사용하면 한 화면에 보이는 경우도 있지만 보통은 화면보다 많은 내용을 출력하는 경우가 많다. 이럴 경우 화면에서 정보를 놓칠 수 있기 때문에 more를 같이 사용하면 한 화면에 한번씩 해당 내용을 보면서 내용을 확인하면 된다.
$ ls m*.*
파일 이름을 대충 알고 있다면 와일드카드를 사용하면 된다. 이 경우에는 m으로 시작하는 모든 종류의 파일을 찾아서 정보를 알려준다. 즉 m.html make.txt 등과 같이 정규표현식에 해당하는 모든 파일을 찾아 볼 수 있다.
$ ls *.txt
특히 분석 등 특수 목적의 경우에는 특정 확장자만 가진 파일을 봐야한다. 즉 .seq, .fasta, *.gz 등 과 같이 압축파일만, 텍스트 파일만, 서열 파일만 봐야하느 경우 위의 경우 처럼 사용하면된다.
$ ls i???.*
또 파일의 이름 중 특정 길이를 알고 있다면 이과 같이 사용한다 i로 시작하는 네 글자 파일을 찾아 정보를 알려준다. 만약 * 대신에 확장자를 입력하면 해당 확장자 및 길이의 파일만 찾을 수 있다.
ls는 가장 많이 쓰이는 명령어이기 때문에 옵션 종류가 가장 많은 것 중에 하나이다. 옵션을 사용할 때는 -를 붙여서 사용하는데 여러개를 동시에 사용할 경우에는 옵션마다 붙이는게 아니고 제일 먼저 쓴 옵션에 하나에만 -기호를 붙이면 된다.
옵션 #
- -R (recursive) : 지정한 디렉토리 아래에 있는 하부디렉토리와 파일들을 모두 포함하여 출력한다.(하위경로와 그 안에 있는 모든 파일도 나열)
- -d : 지정 디렉토리 내에 있는 파일을 제외한 디렉토리 목록만 출력한다.
- -r (descending) : 출력 결과 정렬. 출력결과를 정렬할 때 내림차순으로 정렬한다.
- -S : 파일 사이즈 정렬. 파일사이즈가 가장 큰 것부터 순서대로 나열한다.
- -l : 파일들을 나열할때 자세히 출력한다.
- -a (all) : 경로안의 모든 파일을 나열한다.(숨김파일도 포함)
- -h (humanize) : 파일사이즈를 용량단위(Mb,Gb)를 붙여서 출력해 준다.
- -n : 파일의 소유자와 소유그룹을 표기할때 숫자로 UID, GID로 출력한다.
- -U : 디스크의 저장순서대로 파일을 나열한다.
- -i : 각 파일들의 색인번호(inode)를 각 행의 맨 앞에 출력한다.
- -1(숫자) : 한 줄에 한 파일씩만 나열한다.
- -X : 확장자별로 정열하여 나열한다.
- -F : 파일의 종류별로 파일의 끝에 특수문자를 표시한다.
- 일반파일 : 아무표시없음
- 실행파일 : *
- 디렉토리: /
- 심볼릭링크: @
- FIFO파일 : |
- 소켓파일: =)
팁 #
디렉토리안에는 보통 몇개에서 수십, 수백개의 파일이 존재한다. 이중에서 오랫동안 사용하지 않는 파일이 있다면 그 파일을 지우고 용량을 확보할 수 있다. 최근에 수정된 파일의 경로나 이름이 기억나지 않을 때에는 몇 가지 옵션으로 쉽게 찾아낼 수 있다. -t 옵션을 사용하면 파일이 수정된 시각 또는 마지막으로 변경된 시각을 기준으로 정렬된다. 최근에 변경될 파일일 수록 앞에 나온다. ls -t는 파일 시각을 비교할 때도 유용하고 어떤 파일을 최근에 수정했는지 잊었을 때 유용하다. -u 옵션을 사용한다면 마지막으로 변경한 시각이 아닌 마지막으로 접근한 시간을 기준으로 정렬한다. -u 옵션은 사실 아무런 기능이 없기 때문에 -t 나 -l 등 과 같이 사용하여야 한다. -c 옵션을 사용하면 파일의 아이노드 정보가 마지막으로 변경된 시각을 알 수 있다.