1. 파일의 종류
일반 파일(regular file)
일반 파일은 데이터를 저정하는 데 주로 사용된다. 각종 텍스트 파일, 실행 파일, 이미지 파일 등 리눅스에서 사용하는 대부분의 파일은 일반 파일에 해당한다.
디렉토리(directory)
리눅스에서는 디렉토리도 파일로 취급한다. 디렉토리 파일에는 해당 디렉토리에 저장된 파일이나 하위 디렉토리에 대한 정보가 저장된다.
심벌릭 링크(symbolic link)
심벌릭 링크는 원본 파일을 대신하여 다른 이름으로 파일명을 지정한 것으로, 윈도우의 바로가기 파일과 비슷하다고 보면 된다.
장치 파일(device file)
리눅스에서는 하드디스크나 키보드 같은 각종 장치도 파일로 취습한다. 장치 파일은 리눅스 시스템에 부착된 장치들을 관리하기 위한 특수 파일이다.

2. 디렉토리 계층 구조

 


윈도우에서 파일을 폴더로 구분하여 관리하는 것처럼 리눅스에서도 수많은 파일을 관리하기위해 디렉토리를 사용한다. 리눅스에서는 파일을 효율적으로 관리하기 위해 디렉토리를 계층적으로 구성한다. 이를 트리(tree)구조라고 한다. 
나무가 뿌리에서 시작해 가지로 갈라져 각 가지에 잎이 달리고 열매가 열리는 것처럼 디렉토리도 하부 디렉토리로 나눠지고 각 디렉토리에 파일이 저장된다. 나무의 출발점이 뿌리이듯이 리눅스에서도 모든 디렉토리의 출발점은 루트(root, 뿌리) 디렉토리이다. 루트 디렉토리는 /(빗금)으로 표시한다. 루트 디렉토리가 나무와 다른 점은, 그림으로 나타낼 때 루트 디렉토리가 맨 위에서 출발한다는 것이다.

위의 그림은 리눅스 디렉토리 계층 구조의 일부를 나타낸 것이다. 최상단에 루트 디렉토리(/)가 있고, 그아래에 etc, usr, home, tmp같은 디렉토리가 있다. 이렇게 디렉토리 아래에 있는 디렉토리를 하위 디렉토리 또는 서브디렉토리라 하는데 앞으로는 서브디렉토리라고만 부를 것이다. 예를들어 sbin디렉토리는 usr디렉토리의 서브 디렉토리이고, usr디렉토리는 루트 디렉토리의 서브 디렉토리이다.

반대로 서브 디렉토리 입장에서 보면 자신을 포함하고 있는 상단의 디렉토리가 있는데 이를 부모 디렉토리(parent directory) 또는 상위 디렉토리라 한다. 상위 디렉토리는 ..(마침표 두개)로 표시한다. 루트 디렉토리를 제외하고 모든 디렉토리는 부모 디렉토리가 있다. 루트 디렉토리는 유일하게 상위 디렉토리가 없는 디렉토리이다.

< 디렉토리의 주요 기능 >

디렉토리 

기능 

dev 

장치 파일이 담긴 디렉토리 이다. 

 home

 사용자 홈 디렉토리가 생성되는 디렉토리이다.

 media

 CD-ROM이나 USB같은 외부 장치를 연결(마운트)하는 디렉토리이다.

 opt

추가 패키지가 설치되는 디렉토리이다. 

 root

 root 계정의 홈 디렉토리이다. 루트(/) 디렉토리와 다른 것이므로 혼동하지 않도록 한다.

 sys

리눅스 커널과 관련된 파일이 있는 디렉토리이다. 

 usr

 기본 실행 파일과 라이브러리 파일, 헤더 파일등 많은 파일이 있다. 

참고로 usr는 'Unix System Resource'의 약자이다.

 boot

 부팅에 필요한 커널 파일을 가지고 있다.

 etc

 리눅스 설정을 위한 각종 파일을 가지고 있다.

 lost+found

 파일 시스템에 문제가 발생하여 복구할 경우, 문제가 되는 파일이 저장되는 디렉토리로 보통은 비어 있다.

 mnt

 파일 시스템을 임시로 마운트하는 디렉토리이다.

 proc

 프로세스 정보 등 커널관련 정보가 저장되는 디렉토리이다.

 run

 실행 중인 서비스와 관련된 파일이 저장된다.

 srv

 FTP나 Web등 시스템에서 제공하는 서비스의 데이터가 저장된다.

 tmp

 시스템 사용 중에 발생하는 임시 데이터가 저장된다. 이 디렉토리에 있는 파일은 재시작하면 모두 삭제된다.

 var

 시스템 운영 중에 발생하는 데이터나 로그 등이 저장되는 디렉토리이다.

 

3. 절대 경로명과 상대 경로명
리눅스 파일 시스템에서 디렉토리 계층 구조에 있는 특정 파일이나 디렉토리의 위치를 나타내는 것을 경로명(path name)이라고 한다. 경로명에서 각 경로를 구분하는 구분자로는 /을 사용한다. 경로명에서 가장 앞에 있는 /은 루트 디렉토리를 뜻하지만 경로명 중간에 있는 /은 구분자이다. 예를 들어 /usr/bin/ls에서 맨 앞의 /은 루트 디렉토리를 의미하고, 중간에 있는 / 두개는 디렉토리 이름과 파일 이름을 구분하는 구분자이다.
경로명에는 절대 경로명과 상대 경로명이 있다. 절대 경로명은 항상 루트(/) 디렉토리부터 시작하며 다음과 같은 특징이 있다.
  • 반드시 /으로 시작한다.
  • 루트 디렉토리부터 시작하여 특정 파일이나 디렉토리의 위치까지 이동하면서 거치게되는 모든 중간 디렉토리의 이름을 표시한다.
  • 특정위치를 가리키는 절대 경로명은 항상 동일하다.



상대 경로명은 현재 디렉토리를 기준으로 시작한다. 현재 디렉토리는 사용자가 어느 디렉토리에서 작업 중이냐에 따라 달라지므로 상대 경로명은 매번 달라질 수 있다. 상대 경로명은 다음과 같은 특징이 있다.

 

  • / 이외의 문자로 시작한다.
  • 현재 디렉토리를 기준으로 서브 디렉토리로 내려가면 그냥 서브 디렉토리의 이름을 추가한다.
  • 현재 디렉토리를 기준으로 상위 디렉토리로 가려면 ..(마침표 두 개)를 추가한다.
  • 상대 경로명은 현재 디렉토리가 어디냐에 따라 달라진다.

예를 살펴보면 위의 그림에서 현재 디렉토리가 local이라고 가정한다. 그러면 local의 절대 경로명은 /usr/local가 된다. 또 local 아래 bin의 절대 경로명은 /usr/local/bin이 된다. 그렇다면 bin의 상대 경로명은 무엇일까? 현재 디렉토리인 local을 기준으로 서브 디렉토리로 이동하는 것이므로 그냥 서브 디렉토리의 이름을 추가 하면된다. 따라서 상대 경로명은 'bin'가 된다. 아니면 현재 디렉토리를 표시하는 기호인 .(마침표)를 사용하여 './bin'라고 할 수도 있다.


아직은 많이 헷갈리겠지만 차후에 cd(change directory)를 사용 하여 실습을 많이 하다보면 금방 익숙 해 질 것이다.



4. 파일과 디렉토리의 이름의 규칙

리눅스에서 파일과 디렉토리의 이름을 정하는 규칙은 다음과 같다.
  • 파일과 디렉토리 이름에는 /을 사용할 수 없다. /은 경로명에서 구분자로 사용하기 때문이다.
  • 파일과 디렉토리 이름에는 알파벳, 숫자, 붙임표(-), 밑줄(_), 마침표(.)만 사용한다.
  • 파일과 디렉토리 이름에는 공백 문자, *, |, ", ', @, #, $, %, ^, & 등을 사용하면 안 된다.
  • 파일과 디렉토리 이름의 영문은 대문자와 소문자를 구별하여 다른 글자로 취급한다.
  • 파일과 디렉토리 이름이 .(마침표)로 시작하면 숨김 파일로 간주한다.

파일과 디렉토리 이름에 사용할 수 있는 것과 사용할 수 없는 것을 다음 예를 통해 살펴보자.

 

  • 좋은 이름 : game.txt, hello.c, test, sample11
  • 나쁜 이름 : &name, *dir, my home, game\
  • 사용할 수 없는 이름 : myhome/, /test, bad/name


다음 포스팅에서는 디렉토리 사용명령을 알아보도록 한다. 

 

 

반응형

'IT 기술문서 > Redhat Linux' 카테고리의 다른 글

리눅스(RHEL 5.8) 에서 bash쉘 프롬프트에 전체경로 표시  (0) 2016.06.10
NFS mount  (0) 2016.06.08
linux bonding 작업  (0) 2016.01.13
디렉토리 사용 명령  (0) 2015.12.21
리눅스 파일 다루기  (0) 2015.12.21
Posted by 미니도라
,