파일
path + name = 위치를 구분
파일에는 Data가 들어가있음
파일 = Data를 담는 그릇 = Disk에 존재 ( HDD, SDD, USB 등등)
변수 = Data를 담는 그릇 = Memory에 존재
Disk가 훨씬 큼 (대용량의 데이터는 변수에 담기 어려움)
코딩은 변수에
Data를 영구적으로 저장하기 위해서는 Disk
> 전원을 꺼도 보존됨.
Disk > File
Disk의 용량 부분은 물리적으로 해결이 되어야함.
운영체제 관점에서는
App
------
OS
↓
H/W , Disk
File System (FS)
- 운영체제의 일부, 파일을 관리하기 위한 시스템
- 파일이 잘 관리되고 구동될 수 있게 해줄 수 있는 소프트웨어, 프레임웤
- 디스크 상의 특정 파일 시스템을 위해서 어떤 영역에 어떤 데이터들을 저장하는 부분도 있다.
- 운영체제와 디스크 사이에 있다.
- 파일에 관련된 여러가지 행위들에 관리감독을 해줄 수 있는 계층
계층 구조
- Tree 형태의 계층 구조
리눅스는 루트라는 최상위 디렉토리가 존재
루트의 /bin
루트의 /boot
루트의 /dev
등등등.....
이러한 것들이 하나의 HDD에 연결되어있음.
이러한 상태에서 다른 HDD가 추가 되었다고 하면
위에 파일들을 새로운 디스크 드라이브에 매핑할 수 없음.
여기에서 "마운트"라는 것이 나오게 됨.
빈 디렉토리를 만들고
새로운 하드디스크에 mount해라
파일의 종류
- 일반 파일(regular file) = 말 그대로 일반 파일. 텍스트, 동영상 파일 등이 포함
- 디렉터리(directory) = 파일의 한 종류 = 윈도우의 폴더와 같은 개념
- 심볼릭 링크 파일(symbolic link file) = 어떤 다른 파일을 가리키는 파일 = 윈도우의 바로가기
- 블록 디바이스 파일(block device file) = 블록 디바이스를 제어하기 위한 파일
- 문자 디바이스 파일(character device file) = 문자 디바이스를 제어하기 위한 파일
- 파이프 파일(pipe file) = 파이프를 나타내는 파일, 프로세스간 통신에 사용 (IPC) ls | grep
- 소켓(socket) = 소켓을 나타내는 파일, 프로세스간 통신에 사용됨.
※ 디바이스 파일
user App App
↕ device file= char, block
kernel OS ↔ (H/W가 잘 동작하기 위한 운영체제와 연결된 S/W)
= Device driver
↕
H/W device
대표적인 디렉터리
- / : 루트 디렉터리, 모든 디렉터리의 최상위 부모
- /bin : 모든 사용자가 사용할 수 있는 여러 가지 실행 파일 위치 (binary)
- /sbin : 시스템 관리자 권한으로 실행해야 하는 실행 파일 위치
- /usr/bin
- /usr/sbin
- /etc : 여러 가지 설정 파일(★)
- > 일반 사용자 권한으로는 etc밑에 있는 파일들을 건드리기 어려움
- > Sudo명령어를 사용해서 변경 가능 ( 단, 내가 아는것만!)
- /lib : 공유 라이브러리 디렉터리, 쉐어
- /usr/lib
- /home : 사용자들의 홈 디렉터리
- /mnt : mount, 일시적으로 파일 시스템에 마운트하는 경우 사용하는 디렉터리
- /porc, /sys : 시스템 정보를 설정/조회할 수 있는 디렉터리
- = 운영체제가 자신의 정보들을 사용자(유저)어플리케이션에게 보여주거나 설정할 수 있는 채널
- = OS가 만들어 낸 가상의 파일
- /tmp : temporary, 임시 디렉터리 = 임시 파일 저장
- /usr : 사용자가 추가한 실행 파일, 라이브러리 등의 소프트웨어 저장
- /dev : 디바이스 드라이버가 사용하는 디바이스 파일 디렉터리, 디바이스 파일 저장
- = OS가 만들어낸 시스템, 삭제 불가
디렉터리
- 현재 작업 디렉터리(CWD: Current Working Directory)
- = 쉘이 현재 어느 디렉터리에서 실행중인지 보여주는 역할, pwd로 확인, echo $PW
- 홈 디렉터리(home directory)
- ex) abc → /home/abc, test → /home/test
- 상대경로(relative path) vs 절대 경로(absolute path)
- ex) ../cde /xyz/abc
- .. : 부모 / . : 현재 디렉터리
아이노드(inode)
- 파일 구조 (name - inode - Data)
- 여러 가지 정보를 포함하는 정보 덩어리, 파일에 여러가지 데이터들을 저장해놓은 구조체★
- ★하나의 파일을 구성하는 구성 요소
- *파일 하나가 파일 시스템 상에서는 파일의 데이터와 아이노드와 디렉터리 등등....
- *이런것들이 엮여서 파일 시스템을 이룸
하드링크(hard-link) vs 소프트링크(sofr-link == symbolic link == symlink)
소프트링크란?
- 어떤 실행 파일이 있는데 윈도우에서는 마우스로 클릭해서 바로가기 클릭하면 바로가기가 만들어짐
- 사용자가 탐색기에서 더블클릭해서, 또는 바로가기를 더블클릭하면 실행이 됨.
- 대상이 되는 파일이 헬로우라고 할 때, 소프트링크 파일이 대상이 될 수 있음.
- 같은 디렉터리에 있을 필요가 없음. (바탕화면에 바로가기 만드는것처럼)
- 헬로우 = filename-inode1-file Data / 소프트링크파일도 원본 헬로우와 같이 filename-inode2-file Data
다른 아이노드에 연결되어 있음. 단, 대상이 되는 파일의 경로가 포함이 됨. ex) /usr/hello = Link Data에 포함
하드링크란?
- 특수한 목적이 있을 때만 사용하는 경우가 많음, 그 수가 많지가 않음.
- 하드링크는 대상이 되는 하나의 inode를 공유를 함.
- 여기서 inode에 연결되어 있는 File Data까지도 공유
- 파일 이름만 다르지 파일의 컨텐츠가 똑같음. inode도 마찬가지
- Filename-hard link = Filename 쌍둥이 같은 느낌
- inode만 공유할 수 있으면 여러개의 하드링크 만들기가 가능.
touch
rm
ls -al
cat
mv (이름을 바꾸는 커맨드 X 정확히는 경로를 바꾸는 커맨드)
mv apple /tmp/pineapple
ls
ls /tmp
cat /tmp/pineapple
.(현재 디렉토리로 가져오는) = cat /tmp/pineapple /home/test
mv pineapple ../../tmp/
ls
ls /tmp
cat /tmp/pineapple
cat ../../tmp/pineapple
디렉토리 생성 변경 삭제
mkdir
새로운 디렉터리를 만듬
rmdir
개별 디렉터리를 지우는 커맨드
rm -rf
강제로 파일 디렉토리 삭제
'기초 물방울 > 리눅스&VM' 카테고리의 다른 글
리눅스(Linux) 프로세스와 시그널 (0) | 2022.04.05 |
---|---|
리눅스(Linux) 사용자와 그룹, 소유권, 사용자추가, 스크립트 (0) | 2022.04.04 |
리눅스(Linux) 하드링크와 소프트링크 실습 (0) | 2022.04.04 |
리눅스(Linux) 공부 기록 #2 Ubuntu 커맨드 (0) | 2022.03.20 |
리눅스(Linux)공부기록 #1 첫날부터 개고생... (0) | 2022.03.19 |