파일관련 명령을 보겠습니다.
1. ls
ls 명령은 해당 디렉터리안의 파일이나 디렉터리를 출력해주는 명령입니다. 디렉터리안에 뭐가있는지 정보를 확인할 수 있습니다.
사용법
ls [option] 디렉터리명
ls명령은 옵션이 너무나 많기 때문에 몇가지만 적어보겠습니다.
옵션
옵션 |
의 미 |
-a |
숨겨진 파일이나 디렉터리도 전부 출력해줌 |
-d |
대상이 디렉터리면 해당 디렉터리에 대한 정보를 출력해줌 |
-F |
파일의 형태에 따라 관련 정보 출력 |
-h |
단위를 표시 해줌 |
-i |
i-node번호를 파일 또는 디렉터리명 앞에 출력 |
-l |
파일 이나 디렉터리 정보를 한줄씩 보여준다. |
-S |
파일크기가 큰거부터 출력해준다 |
-t |
최근 수정된 파일부터 시간순으로 출력 |
-u |
사용된 시간으로 출력 |
쓰다보니 많아 졌네요..
방법은 간단하게 a와 l만 보겠습니다. 먼저 a는 전부를 출력해 주는 거라고 했는데 위에서 차이를 보시면 ls만 해서 조회했을때 없던 . 으로 시작하는 디렉터리가 보
입니다. .으로 시작하는것은 숨겨진 파일로 아시면 됩니다. 숨겨진파일이면 그만큼 보안도 높다고 보시면 됩니다.
다음은 l인데 이 옵션은 한줄씩해서 정보를 쭉 출력해 줍니다. 총 7개의 필드로 구성 되있습니다. 하나를 예를 들어서 보여드리겠습니다.
접근허용 링크 소유자 그룹 파일크기(byte) 최종수정날짜 디렉터리명
이로인해서 대강의 파일 이나 디렉터리에 대한 정보를 파악할 수 가 있습니다.
2. mv
mv는 move로 파일이나 디렉터리를 이동시킵니다. 또한 이름 변경도 가능한놈입니다.
사용법
mv [option] 원본파일 목적지
옵션 | 의 미 |
-b |
덮어쓸 때 백업본의 파일을 만듦 |
-f |
같은 이름이 존재하는 경우 강제로 덮어씀 |
-i |
이동할 디렉터리에 동일한 파일명이 존재하면 덮어쓸건지 물어본다 |
-u |
동일한 파일이 있으면 검사해 해당파일이 최신이면 이동하지 않음 |
-v |
이동하는 내용을 출력 |
예시를 보시면 test에 있는 hello는 내용이 "hi hello"이고 test1에 있는 hello는 "hihihihihihihihii"입니다. test1에 있는 hello를 가장 최신에 만들었고요.
먼저 u옵션으로 파일 이동을 하였는데 최신파일이 test1에 있는 파일이기 때문에 파일이 그대로 인것을 볼 수 있습니다.
그다음은 i옵션으로 덮어쓸것인지 여부를 묻고 b옵션으로 인해서 test1의 hello파일의 백업본인 hello~가 생긴것을 보실수 있습니다.
그리고 v옵션으로 인해서 이동 내용이 출력이 되었습니다. f는 그냥 덮어쓰는 거기 때문에 따로 안썼습니다.
**mv명령의 원리는 i-node번호를 바꾸는 것입니다. 위의 ls명령에서도 잠깐 나왔는데 간단하게 짚고 넘어 가겠습니다.
i-node는 쉽게 말해 파일의 정보가 들어있는 것입니다. 파일마다 각기 다른 i-node번호가 부여되있습니다. 사용자가 파일이나 디렉터리를 생성하면
자동으로 번호가 자동으로 부여되는데 이를 아이노드 테이블에 저장합니다. mv명령어는 각기 다른 이 i-node번호를 바꾸어 줌으로서 파일 또는 디렉터리의
이동을 할 수 있다고 보시면 됩니다.
3. cp
cp명령어는 파일이나 디렉터리를 복사하는 명령어 입니다.
사용법
cp [option] 복사할파일 목적지
옵션 |
의 미 |
-a |
-dpr 옵션과 같으며, 파일의 속성, 링크 정보를 유지하고 하위 디렉터리까지 전부 복사 |
-b |
덮어쓸 경우 백업 파일을 만듦 파일명뒤에 ~가 붙는다. |
-d |
복사할 파일이 심볼릭 링크 파일이면 그 원본을 복사한다. |
-f |
같은 이름으로 되있으면 강제로 덮어씀 |
-i |
같은 이름의 파일이 존재할 경우 덮어 쓸것인지 물어본다 |
-l |
복사대신 하드 링크 파일을 만든다 |
-p |
모든정보를 복사한다. |
-r |
대상이 디렉터리이면 하위 디렉터리까지 복사한다. |
-s |
복사대신 심볼릭링크를 만듦 |
-v |
복사전에 각 파일명을 출력 |
-u |
복사대상이 최신 파일이면 복사되지 않음 |
예제를 하기 전에 하드링크와 심볼릭링크를 짚고 넘어 가겠습니다.
*하드링크 : 하나의 동일한 파일을 다른곳(동일 파일 시스템)에 배치해 여러 이름으로 사용하는 것.
-원본과 링크파일 아이노드 번호가 같음, 내용과 크기가 같음
-원본이나 링크파일중 아무거나 하나만 설정해도 같이 반영됨.
-원본을 삭제해도 링크 파일은 영향 없음
-파티션이나 디스크드라이버를 건너 사용할 수 없고, 파일만 설정가능.
ps.위에서 본 ls -l의 결과에서 링크수가 있는데 링크를 만들면 이 링크수가 증가 합니다.
*심볼릭링크 : 하드링크와 비슷하나 다른점은 원본과 링크파일은 다른파일로 관리됨.
-원본과 링크파일 아이노드 번호가 다름, 링크파일의 크기가 작다.
-ls -l로 조회했을때 권한 필드의 맨앞에 l 이라고 나옴.
-원본이나 링크파일중 아무거나 하나만 설정해도 같이 반영됨.
-원본파일을 삭제하면 링크파일은 구실을 못함
ps. 링크파일 생성시 퍼미션(권한)이 777로 표시되나, 이는 원본파일 권한과는 무관합니다.
한번 사용해 보겠습니다.
그림에서 보듯이 cho/cho1만 존재하는 디렉터리에 cho의 디렉터리를 복사(하위디렉터리 포함)해서 cho1에 붙였습니다.
r옵션으로 인해 하위디렉터리도 복사되었고 p옵션으로 모든정보 복사, d는 심볼릭일경우 이므로 패스하겠습니다. 그리고 v옵션으로 인해
복사 정보가 출력됬습니다. 이모든 명령이 v를 제외하고 a하나로 가능하다는 것을 볼 수 있습니다.
다음은 링크에 대한 내용입니다.
s옵션으로 심볼릭링크를 생성, l명령으로 하드링크를 생성하였습니다(cp명령에서 링크는 현재 디렉터리에서만 가능합니다. 다른디렉터리에서는 안됩니다.)
그리고 생성된 링크파일에대한 정보를 보니 심볼릭링크는 권한의 맨앞에 l이나와있고 퍼미션이 777입니다. 원본파일과는 다른 퍼미션이고 정보에
hi파일에 링크되있다는 정보가 나옵니다. 반면 하드링크는 권한과 파일크기 등 정보가 동일합니다.
참고로 링크만드는 명령어는 ln이라는 명령이있습니다. 뒤에서 다루도록 하겠습니다.
4. rm
rm은 remove의 약자로 파일이나 디렉터리를 삭제합니다.
사용법
rm [option] 파일명
옵션 | 의 미 |
-f |
강제로 지울때 사용한다 |
-i |
삭제시에 질의를 사용한다. y or n |
-r |
하위 디렉터리포함 디렉터리안의 내용을 지운다 |
rm명령을 하여 아까 위에서 cp명령으로 만든 cho1의 하위디렉터리인 cho를 삭제하였습니다. i옵션으로 질의를 하고 r옵션으로 하위 디렉터리
까지 모두 삭제하였습니다.
5. touch
타임스탬프 변경 및 empty파일을 생성하는 명령어 입니다.
사용법
touch [option] 파일명
옵션 | 의 미 |
-a |
접근 시간을 바꾼다(access time) |
-m |
수정 시간을 바꾼다(modification time) |
-r |
지정된 파일의 접근 시간, 수정 시간으로 특정파일의 시간을 변경 |
옵션없이 사용하면 수정 시간이 바뀌므로 hello의 수정시간을 현재 시간으로 바꾸어주고 다시 hi의 수정시간과 동일하게 수정해주는 작업이였습니다.
이정도로 하고 타임스탬프에 대해서 설명하겠습니다.
타임스탬프는 리눅스 파일에 대한 시간관련정보입니다. access time, modify time, change time으로 나뉩니다.
-access time : 파일 내용을 읽었을때 바뀌는 시간
-modify time : 파일 내용을 수정했을때 바뀌는 시간.(ls -l로 조회가능)
-change time : 파일 내용을 수정했을때 바뀌는 시간이나 절대 변경이 불가능함.
타임스탬프는 stat명령으로 확인이 가능 합니다.
6. file
파일의 종류를 출력해줍니다.
사용법
file 파일명
와일드카드문자(*)를 이용해 디렉터리내 파일의 종류를 보았습니다.
7. find
주어진 여러 조건을 가지고 파일 및 디렉터리를 찾아서 경로를 출력해주는 명령으로 유용한 명령이나, 접근권한이 제한된 파일이나 디렉터리에는
접근거부메세지가 나타남
사용법
find 경로 옵션 찾을것
옵션 |
의 미 |
-name |
주어진 이름의 파일 이나 디렉터리를 찾는다 |
-user |
지정한 사용자의 파일이나 디렉터리를 찾는다 |
-group |
지정한 그룹 소유의 파일이나 디렉터리를 찾는다 |
-uid |
지정한 uid 소유의 파일이나 디렉터리를 찾는다 |
-gid |
지정한 gid 소유의 파일이나 디렉터리를 찾는다 |
-perm |
지정한 퍼미션을 갖는 파일이나 디렉터리를 찾는다 |
-type |
지정한 파일 유형을 찾는다(d:디렉터리, f: 일반파일, l: 링크파일, b: 블록디바이스, c: 캐릭터디바이스, p: 파이프 파일, s: 소켓파일) |
-atime n |
access time 기준으로 찾는다 |
-ctime n |
change time 기준으로 찾는다 |
-mtime n |
modify time 기준으로 찾는다 |
-exec |
찾아진 파일과 연계해 추가 명령을 내리는 옵션이다. 결과값은 {}기호로 끝은 \; 로 끝낸다 |
-ls |
맨뒤에 사용하면 정보를 상세 출력함 |
-size n |
n블록길이의 파일을 찾는다 +n은 n블록보다 큰, -n은 n블록보다 작은 파일을 의미하고 보통뒤에 c를 붙이며 c는 character를 의미하고 보통 바이트 단위로 인식하여 사용한다. |
-inum n |
node번호가 n인 파일을 찾는다 |
-iname |
대소문자를 구별하지 않고 이름으로 찾을때 사용 |
-prune |
찾는 대상이 디렉터리이면 하위디렉터리 검색을 하지 않음 |
-empty |
파일의 크기가 0 또는 비어있는 디렉터리를 찾는다 |
너무 많으니 많이 쓰이는거 위주로 예를 들어 보겠습니다.
경로는 따로 지정안하면 현재디렉터리 부터 하위 디렉터리까지 다 찾아 봅니다. 다뒤져 보고 싶으면 "find / -name cho" 이런식으로 사용하면 됩니다.
또한 와일드 카드 문자(*)를 사용하여 포함하는 문자를 검색할 수도 있습니다. 그렇기에 매우 유용하고 강력한 찾기 시스템입니다.
perm같은 옵션은 취약점발견에 매우 유용한 옵션인데 나중에 분석하는 게시물에 따로 올리 겠습니다.
type옵션으로 l을 사용하여 링크파일을 검색해 보았고, size옵션을 이용해 10바이트의 크기를 가진 파일들을 검색하였습니다.
마지막명령은 현재디렉터리에서 하위디렉터리까지 hi라는 이름으로된 파일을 찾아 그값을 exec옵션으로 해서 mv명령으로 넘겨주어 끝에 cho디렉터리로
hi파일을 옮기는 작업입니다. {}에 hi파일을 찾은 결과 값이 들어가고 그결과값으로 명령을 쓰고 \; 으로 끝내는 방식입니다.
파일관련 명령이었습니다. find는 숙지를 많이 해놓으면 정말 유용한 (해킹, 보안, 검색, 자격증 등등) 많이 쓰일 수 있는 명령어 입니다. 특히 리눅스마스터1급같이
실기가 동원되는 시험에서 유용하게 썼습니다.(저는..)
'Linux' 카테고리의 다른 글
8. Linux 기본 명령어(텍스트 파일)_2 (0) | 2016.11.11 |
---|---|
7. Linux 기본 명령어(텍스트 파일) (0) | 2016.11.10 |
5. Linux 기본 명령어(디렉터리 : pwd, cd, mkdir, rmdir) (0) | 2016.11.05 |
4. Linux 기본 명령어(그룹관련 groupadd, gpasswd, nwegrp, groupmod, groupdel) (0) | 2016.10.27 |
3. Linux 기본 명령어(사용자관련 who,whoami, w,users,logname, id, groups) (0) | 2016.10.27 |
댓글