📗 4.1 파일 복사
- 파일 복사
$ cp 파일1 파일2
: 파일 1을 파일 2에 복사
$cp [-i] 파일1 파일2
: i는 대화형 옵션으로, 만약 동일한 이름의 파일이 존재한다면 덮어쓰기 할 것인지 물어봄 (y로 답하면 덮어쓰기)
- 파일을 디렉터리로 복사
$cp 파일 디렉터리
: 파일을 지정된 디렉터리에 복사
- 여러 개의 파일을 디렉터리로 복사
$ cp 파일1 ... 파일n 디렉터리
: 여러 개의 파일들을 지정된 디렉터리에 모두 복사
- 디렉터리 전체 복사
$ cp [-r] 디렉터리1 디렉터리 2
: 디렉터리 1 전체를 디렉터리 2에 복사
📗 4.2 파일 이동
- 파일 이동
$ mv 파일1 파일2
: 파일1의 이름을 파일2로 변경 ⬅ 파일1의 이름은 존재하지 않고 파일2로 이름이 바뀜
$ mv -i 파일1 파일2
: 대화형 옵션으로 덮어쓰기 여부를 물어봄
- 파일 ➡ 디렉터리
$ mv 파일 디렉터리
: 파일을 지정된 디렉터리로 이동
- 여러 개의 파일 ➡ 디렉터리
$ v 파일1 ... 파일n 디렉터리
: 여러 개의 파일들을 지정된 디렉터리로 모두 이동
- 디렉터리 이름 변경
$ mv 디렉터리1 디렉터리2
: 디렉터리1을 지정된 디렉터리2로 이름 변경
📗 4.3 파일 삭제
- 파일 삭제
$ rm 파일
: 파일(들) 삭제
rm -i 파일
: 파일 삭제 여부 물어봄
- 디렉터리 전체 삭제
$ rm -r 디렉터리
: 디렉터리 아래의 모든 것을 삭제
$ rm -ri 디렉터리
: 디렉터리 삭제 여부 물어봄
$ rmdir 디렉터리
: 비어 있는 디렉터리만을 삭제하는 명령어
📗 4.4 링크
링크란?
링크란 기존 파일에 대한 또 하나의 새로운 이름이라고 할 수 있음
- 링크 명령어
$ ln 파일1 파일2
: 파일1에 대한 링크로 파일2를 만듬
$ ln 파일1 디렉터리
: 파일1에 대한 링크를 지정된 디렉터리에 같은 이름으로 만들어줌
하드 링크
- 하드 링크(hard link)는 기존 파일에 대한 새로운 이름
$ ln hello.txt hi.txt
: 기존 파일 hello.txt에 대한 새로운 링크로 hi.txt를 만들어줌, hi.txt는 hello.txt의 또 다른 이름
- 둘 중 한 파일의 내용을 수정하면 똑같이 수정됨, 별도의 파일이 아니기 떄문
- 둘 중에 한 파일을 삭제하면 이름만 하나 없어지게 됨, 링크 수를 1 감소시키는 것
- 링크 수가 0이 되면 파일을 완전히 삭제
심볼릭 링크
- 심볼릭 링크(symbolic link)는 다른 파일을 가리키고 있는 별도의 파일
- 실제 파일의 경로명을 저장하고 있는 일종의 특수 파일
- 다른 파일에 대한 간접적인 포인터 역할
$ ln -s hello.txt hi.txt
: hi.txt라는 심볼릭 링크 파일을 만들게 됨, 단지 hello.txt 파일의 위치를 나타냄
- 원본 파일을 삭제하게 되면 링크 파일은 무용지물
링크를 이용하면 다른 디렉터리에 있는 파일도 경로명으로 기술해 내 디렉터리에 새로운 이름으로 링크 만들 수 있음 (디렉터리 이동해서 파일을 참조해야 하는 불편함 해소)
-ex) $ ln -s usr/bin/gcc cc
📗 4.5 파일 속성
- 파일 속성의 종류
$ ls -sl cs1.txt
파일의 속성 예
파일 속성 | 값 | 의미 |
---|
파일 크기 | 4 | 파일 크기 4K 바이트 |
파일 종류 | - | 일반 파일 (-) |
접근 권한 | rw-rw-r-- | 소유자(rw-), 그룹(rw-), 기타사용자(r--) |
하드 링크 수 | 1 | 파일의 하드 링크 개수 |
소유자명 | chang | 파일 소유자의 소유자명 |
그룹명 | cs | 파일 소유자의 그룹명 |
파일 크기 | 2088 | 파일 크기 2088 바이트 |
최종 수정 시간 | 10월23일 13:37 | 파일을 최종 수정한 시간 |
파일 이름 | cs1.txt | 파일의 이름 |
파일의 속성
파일 속성 | 의미 |
---|
파일 크기 | 파일의 크기(K 바이트 단위) |
파일 종류 | 일반 파일(-), 디렉터리(d), 링크(l). 파이프(p), 소켓(s), 디바이스(b 혹은 c) 등의 파일 종류 |
접근권한 | 파일에 대한 소유자, 그룹, 기타 사용자의 읽기(r)/쓰기(w)/실행(x) 권한 |
하드 링크 수 | 파일에 대한 하드 링크 개수 |
소유자 및 그룹 | 파일의 소유자 ID 및 소유자가 속한 그룹 |
파일 크기 | 파일의 크기(바이트 단위) |
최종 수정 시간 | 파일을 생성 혹은 최후로 수정한 시간 |
파일 크기
- 킬로바이트(KB), 바이트(B) 단위 두가지로 나타냄
파일 종류
파일 종류 | 표시 | 설명 |
---|
일반 파일 | - | 데이터를 갖고 있는 텍스트 파일 또는 이진 파일 |
디렉터리 파일 | d | 디렉터리 내의 파일들의 이름들과 파일 정보를 관리하는 파일 |
문자 장치 파일 | c | 문자 단위로 데이터를 전송하는 장치를 나타내는 파일 |
블록 장치 파일 | b | 블록 단위로 데이터를 전송하는 장치를 나타내는 파일 |
FIFO 파일 | p | 프로세스 간 통신에 사용되는 이름 있는 파이프 |
소켓 | s | 네트워크를 통한 프로세스 간 통신에 사용되는 파일 |
심볼릭 링크 | l | 다른 파일을 가리키는 포인터와 같은 역할을 하는 파일 |
$ file 파일
: 파일의 종류에 대한 자세한 정보를 출력
파일의 소유자
- 파일을 소유하는 사용자의 이름 혹은 ID
- 시스템 관리자 ➡ 슈퍼유저 : root
파일의 그룹
- 파일 소유자가 속한 그룹
- 보안 관리를 위해 동일한 성격의 사용자들을 하나의 그룹으로 묶어서 관리
최종 수정 시간
📗 4.6 접근권한
- 파일의 접근권한(permission mode)은 읽기(r), 쓰기(w), 실행(x) 권한을 의미
- 파일의 접근권한이 위 그림과 같다면 이 파일의 소유자는 이 파일을 읽고, 쓰고, 실행하는 것이 가능하며 그룹 및 기타 사용자들은 읽기와 실행만 가능함
📗 4.7 접근권한 변경
- 접근권한 변경 명령어
$ chmod 접근권한 파일 or 디렉터리
: 파일이나 디렉터리의 접근권한 변경
$ chmod [-R] 접근권한 파일 or 디렉터리
: 지정된 디렉터리 아래의 모든 파일과 하위 디렉터리에 대해서도 접근권한 변경
8진수를 이용한 접근권한 변경
- 파일의 접근권한을 8진수로 표시
- 위 그림과 같이 소유자의 읽기, 쓰기, 실행 각 권한에 대해 1비트를 할당하여 권한이 있으면 1 없으면 0으로 표시
$ chmod 644 cs1.txt
: 접근권한을 rw-r--r--로 변경
기호를 이용한 접근권한 변경
- ex)
$ chmod g-w cs1.txt1
: 그룹(g)에서 쓰기(w) 권한 제거
📗 4.8 기타 파일 속성 변경
소유자 변경 : chwon(change owner)
- 파일 혹은 디렉터리의 소유자를 지정된 사용자로 변경, 슈퍼유저만 사용가능
$ chown 사용자 파일
$ chown [-R] 사용자 디렉터리
- -R을 사용하면 하위 디렉터리까지 변경
그룹 변경 : chgrp(change group)
- 파일 혹은 디렉터리의 그룹을 지정된 그룹으로 변경
- 파일의 소유자는 해당 파일의 그룹을 소유자가 속한 다른 그룹으로만 변경 가능
$ chgrp 그룹 파일
chgrp [-R] 그룹 디렉터리
- -R을 사용하면 하위 디렉터리까지 변경
최종 수정 시간 변경
- 파일의 최종 사용 시간과 최종 수정 시간 변경
$ touch 파일
- 해당 파일이 없으면 파일 크기가 0인 이름만 있는 파일을 만들어줌