우당탕탕 개발자 되기
File 본문
File의 필요한 이유
- 변수에 저장된 정보들은 실행이 끝나면 모두 사라진다.
- 정보를 영속적으로 저장하기 위해서는 파일에 저장해야 한다.
유닉스 파일
- 모든 데이터를 연속된 바이트 형태로 저장한다.
일반 파일
- 데이터를 가지고 있으면서 디스크에 저장된다.
- 텍스트 파일, 이진 파일(binary file)
디렉터리 또는 폴더
- 파일들을 계층적으로 조직화하는 데 사용되는 일종의 특수 파일
- 디렉터리 내에 파일이나 서브디렉터리들이 존재한다.
장치 파일
- 물리적인 장치에 대한 내부적인 표현
- 키보드(stdin), 모니터(stdout), 프린터 등도 파일 처럼 사용
심볼릭 링크 파일
- 어떤 파일을 가리키는 또 하나의 경로명을 저장하는 파일
리눅스에서 지원하는 파일 종류
| 파일 종류 | 표시 | 설명 |
| 일반 파일 | - | 데이터를 갖고 있는 텍스트 파일 또는 이진 파일 |
| 디렉터리 파일 | d | 디렉터리 내의 파일들의 이름들과 파일 정보를 관리하는 파일 |
| 문자 장치 파일 | c | 문자 단위로 데이터를 전송하는 장치를 나타내는 파일 |
| 블록 장치 파일 | b | 블록 단위로 데이터를 전송하는 장치를 나타내는 파일 |
| FIFO 파일 | p | 프로세스 간 통신에 사용되는 이름 있는 파이프 |
| 소켓 | s | 네트워크를 통한 프로세스 간 통신에 사용되는 파일 |
| 심볼릭 링크 | l | 다른 파일을 가리키는 포인터와 같은 역할을 하는 파일 |
$ file [옵션] 파일 : 파일의 타입 결정
파일 상태(file status)
- 파일에 대한 모든 정보
- 블록수, 파일 타입, 접근권한, 링크수, 파일 소유자의 사용자 ID
- 그룹 ID, 파일 크기, 최종 수정 시간 등
- 메타데이터(metadata)
파일 속성(file attribute)
| 파일 속성 | 의미 |
| 파일 크기 | 파일의 크기(K 바이트 단위) |
| 파일 종류 | 일반파일(-), 디렉터리(d), 링크(l), 파이프(p), 소켓(s), 디바이스(c or d) 등의 파일 종류를 나타낸다. |
| 접근권한 | 파일에 대한 소유자, 그룹, 기타 사용자의 읽기(r)/쓰기(w)/실행(x) 권한 |
| 하드 링크 수 | 파일에 대한 하드 링크 개수 |
| 소유자 및 그룹 | 파일의 소유자 ID 및 소유자가 속한 그룹 |
| 파일 크기 | 파일의 크기(바이트 단위) |
| 최종 수정 시간 | 파일의 생성 or 마지막 수정 시간 |
$ stat [옵션] 파일
: 파일의 자세한 상태 정보를 출력한다.
$ cat[-n] 파일
: 파일의 내용을 화면에 출력한다. 파일을 지정하지 않으면 표준입력 내용을 그대로 화면에 출력
$ more 파일
: 파일의 내용을 페이지 단위로 화면에 출력한다.
$ head [-n] 파일
: 파일의 앞부분을 화면에 출력한다. 파일을 지정하지 않을 시 표준 입력 내용을 대상으로 한다.
$ tail [-n] 파일
: 파일의 뒷 10개 라인을 화면에 출력한다. 파일을 지정하지 않을시 표준입력 내용을 대상으로 한다.
$ wc [-lwc] 파일
: 파일에 저장된 줄(l), 단어(w), 문자(c)의 개수를 세서 출력한다. 파일을 지정하지 않을시 표준입력 내용을 대상으로 한다.
파일 복사 cp(copy)
$cp [-i] 파일1 파일2
:파일1을 파일2에 복사한다. -i 는 대화형 옵션이다.- cp -i : 복사 대상 파일과 이름이 같은 파일이 이미 존재하면 덮어쓰기(overwrite), 보다 안전한 사용법은 대화형-i(interactive) 옵션을 사용
$cp 파일 디렉터리
: 파일을 지정된 디렉터리에 복사한다.
$cp 파일1 ..... 파일n 디렉터리
: 여러 개의 파일들을 지정된 디렉터리에 모두 복사한다.
$cp [-r] 디렉터리1, 디렉터리2
: r은 리커전 옵션으로 디렉터리1 전체를 디렉터리2에 복사한다.
파일 이동 mv(move)
$ mv [-i] 파일1 파일2
: 파일1의 이름을 파일2로 변경한다. -i는 대화형 옵션이다.
$ mv 파일 디렉터리
: 파일을 지정된 디렉터리로 이동한다.
$ mv 파일1 ..... 파일n 디렉터리
: 여러 개의 파일들을 지정된 디렉터리로 모두 이동한다.
$ mv 디렉터리1, 디렉터리2
: 디렉터리1을 지정된 디렉터리2로 이름을 변경한다. (두 인자가 모두 디렉터리인 경우, 디렉터리 이름이 변경됨)
파일 삭제 rm(remove)
$rm [-i] 파일+
: 파일을 삭제한다. -i는 대화형 옵션
$ rm [-ri] 디렉터리
: -r은 리커전 옵션으로 디렉터리 아래의 모든 것을 삭제한다.
링크
- 기존 파일에 대한 또 하나의 새로운 이름
$ ln [-s] 파일1 파일2
: 파일1에 대한 새로운 이름(링크)로 파일2를 만들어 준다. -s 옵션은 심볼릭 링크
$ ln [-s] 파일1 디렉터리
: 파일1에 대한 링크를 지정된 디렉터리에 같은 이름으로 만들어 준다.
하드링크
- 기존 파일에 대한 새로운 이름이라고 생각할 수 있다.- 실제로 기존 파일을 대표하는 i-노드를 가리켜 구현한다.
심볼릭링크
- 다른 파일을 가리키고 있는 별도의 파일- 실제 파일의 경로명을 저장하고 있는 일종의 특수 파일- 이 경로명이 다른 파일에 대한 간접적인 포인터 역할을 한다.
'LINUX' 카테고리의 다른 글
| Find and Grep (0) | 2021.04.08 |
|---|---|
| Redirection (0) | 2021.03.28 |
| Process (0) | 2021.03.27 |
| Privilege (0) | 2021.03.26 |
| Directory (0) | 2021.03.25 |