3주 파일 시스템
교재: 유닉스 리눅스 사용에서 프로그래밍까지 저자: 창병모
출판사: 생능출판사 2012년 발행
리눅스시스템
파일 시스템
• 파일
– 관련 있는 정보들의 집합
• 파일 시스템
– 시스템 내의 파일을 효과적으로 관리하기 위
해 계층적으로 구성한 유닉스, 리눅스 시스템
의 파일과 디렉토리의 집합
파일의 종류
• 일반 파일(ordinary file)
– 데이터를 가지고 있으면서 디스크에 저장된다.
• 디렉토리(directory)/폴더(folder)
– 디렉토리(폴더) 자체도 하나의 파일로 한 디렉토리는 다른 디렉토리들을 포함함으로써 계층 구조를 이룬다.
– 부모 디렉토리는 다른 디렉토리들을 서브 디렉토리로 갖는다.
• 특수 파일(special file)
– 물리적인 장치에 대한 내부적인 표현
– 키보드(stdin), 모니터(stdout), 프린터 등도 파일처럼
사용
디렉토리 계층구조
• 유닉스의 디렉토리는 루트로부터 시작하여 계층구조를 이룬다.
디렉토리 계층구조
• 리눅스 디렉토리
홈 디렉토리/현재 작업 디렉토리
• 홈 디렉토리(home directory)
– 각 사용자마다 별도의 홈 디렉토리가 있음
– 사용자가 로그인하면 홈 디렉토리에서 작업을 시작함
• 현재 작업 디렉토리(current working directory)
– 현재 작업 중인 디렉토리
– 로그인 하면 홈 디렉토리에서부터 작업이 시작된다.
디렉토리 계층 구조
/
bin etc usr tmp
default bin lib login
(뿌리)루트
디렉토리(가지)
파일(잎)
상위
하위 디렉토리현재
디렉토리하위
디렉토리상위
홈 디렉토리 : ~ 현재 디렉토리 : . 상위 디렉토리 : ..
하위 디렉토리 : 이름
절대 경로와 상대 경로
• 경로
– 파일 시스템에서 특정 파일의 위치
• 절대 경로
– 루트 디렉토리를 기준으로 함
– 루트 디렉토리부터 특정 파일까지 가는데 거치는 모든 디렉토리의 이름 표시 – 항상 / 로 시작
• 상대 경로
– 현재 위치를 기준으로 함
– 하위로 내려갈 때는 디렉토리의 이름을, 상위로 올라갈 때는 .. 추가 – 슬래시 이외의 문자로 시작
– 같은 파일의 상대 경로라도 현재 위치에 따라 달라짐
절대 경로와 상대 경로
/
usr opt dev etc export kernel var bin sbin lib prof home
user1 user2 sjyoun
unix
unix의 절대경로 : /export/home/user2/
unix
unix의 상대경로 : unix
현재 디렉토리
파일과 디렉토리 명명 규칙
• 유의 사항
– 사용 가능
• 알파벳(대소문자 구분), 숫자, 하이픈(-), 밑줄(_), 점(.)
– 사용 자제
• 공백, *, &, |, “, ‘, `, ~, #, $, (, ), |, ;, <, >
• 쓰는 경우 이름을 따옴표로 감싸거나 모든 특수문자 앞에 \를 추가
– 사용 불가 : /
• 예
– 좋은 이름
• C, helloWorld.c, unix, .secrete, sample12
– 나쁜 이름
• *hl, I’am, #77dir, my dir, book\
– 쓸 수 없는 이름
• Mydir/, /test, wrong/name
출력 재지정(output redirection)
• 명령어의 표준출력 내용을 모니터에 출력하는 대신에 파일에 저장
$ 명령어 > 파일
$ who > names.txt
출력 추가
• 명령어의 표준출력을 모니터 대신에 기존 파일에 추가
$ 명령어 >> 파일
$ cat >> list1.txt Bye !
This is the end of the first list.
^D
$ cat list1.txt Hi !
This is the first list.
Bye !
This is the end of the first list.
입력 재지정(input redirection)
• 명령어의 표준입력을 키보드 대신에 파일 에서 받는다.
$ 명령어 < 파일
$ wc < list1.txt
4 17 71 list1.txt
문서 내 입력(here document)
• 명령어의 표준입력을 단어가 다시 나타날 때까지의 내용으로
• 보통 스크립트 내에서 입력을 줄 때 사용
$ 명령어 << 단어 단어
...$ wc << end hello !
word count
end 2 420
파이프
• 로그인 된 사용자들을 정렬해서 보여주기
$ who > names.txt
$ sort < names.txt
• $ 명령어1 | 명령어2
– 명령어1의 표준출력을 명령어2의 표준입력으로 바로 받는다.
$ who | sort
전면 처리 vs 후면처리
• 전면 처리
– 명령어를 입력하면 명령어가 전면에서 실행되며 명령어 실행이 끝날 때까지 쉘이 기다려 준다.
• 후면 처리
– 명령어들을 후면에서 처리하고 전면에서는 다른 작업을 할 수 있으면 동시에 여러 작업을 수행할 수 있다.
– $ 명령어 &