[Linux] 파일과 디렉토리 기본

반응형

1. 리눅스의 디렉토리 구조

다음은 일반적인 리눅스의 디렉토리 구조를 표현한 것이다. 

리눅스 주요 디렉토리

가장 최상단에 위치한 / 디렉토리를 루트(root) 디렉토리라고 한다. 모든 파일과 디렉토리의 부모이다.

이와같이 루트 디렉토리 아래에 파일과 디렉토리가 있는 계층 구조를 트리구조 라고 한다.

 

2. 윈도우와의 차이

윈도우도 리눅스와 비슷하게 디렉토리 트리 구조를 가진다. 하지만 윈도우에서는 물리디스크가 2개 있다면 디렉토리 트리도 2개가 된다.

하지만 리눅스에서는 항상 시스템 전체에 단 하나의 트리만 가진다.

리눅스에서는 디스크가 여러개 있다면 루트디렉토리 어딘가에 연결되어(마운트) 루트는 1개를 가진다.

 

3. 디렉토리의 역할

디렉토리 구조는 배포버전마다 차이가 있다. 그러므로 대부분 공통적으로 사용되는 대표적인 디렉토리를 살펴보자.

리눅스의 디렉토리 구조는 FHS(Filesystem Hierarchy Standard) 라는 표준 사양을 따른다.

3.1. /bin

일반 사용자 및 관리자가 사용하는 명령어의 실행파일이 배치되어 있는 디렉토리이다. 특히 시스템과 관련된 중요도가 높은 명령어를 포함하고 있다.

3.2. /dev

디스크, 키보드 등 하드웨어를 다루기위한 파일인 디바이스 파일이 배치되어 있는 디렉토리이다. 

 

3.3. /etc

리눅스에서 돌아가는 어플리케이션의 설정 파일 및 리눅스 자체의 설정파일 등이 배치된다. 리눅스 운영 및 관리에 중요한 디렉토리이다. 

 

3.4. /home

사용자별로 할당되는 개인용 디렉토리인 홈 디렉토리가 배치되는 디렉토리이다. 사용자 이름으로 디렉토리 명이 사용된다. 따라서 사용자가 3명으로 gymin, matilda, billy 가 존재한다면 각 사용자의 홈 디렉토리는 /home/gymin , /home/matilda , /home/billy 가 되는 것이다. 사용자는 홈 디렉토리에서 자유롭게 파일 및 디렉토리를 작성하여 작업할 수 있다.

 

3.5. /sbin

/bin 과 비슷하게 실행파일을 포함하는 디렉토리이다. 관리자용 명령어가 포함되어 있다. 예를들면 shutdown 명령어 등이다.

 

3.6. /tmp

임시 파일이 들어있는 디렉토리이다. 어플리케이션 실행 중 임시로 작업 결과를 파일로 보존할 때 이 디렉토리에 저장한다. 정기적으로 파일을 삭제하도록 설정된 경우도 있으니 중요한 파일은 보관하지 말아야 한다.

 

3.7. /usr

설치한 어플리케이션의 실행파일, 문서, 라이브러리 등이 이 디렉토리에 포함된다. /usr 아래에는 bin, sbin, etc 등이 존재하므로 루트디렉토리와 구조가 비슷하다.

 

3.8. /var

가변적인(variable) 데이터를 저장하기 위한 디렉토리이다. 어플리케이션 실행 중 만들어진 데이터, 로그, 메일 등이 이곳에 저장된다. 따라서 많은 파일이 기록될 수 있으므로 용량문제도 생길 수 있어 시스템을 관리할때 주의해야 한다.

 

4. 경로 : 절대 경로와 상대 경로

경로(path) 를 표기할때 /(슬래시) 를 사용하며 /usr/bin과 같이 표기한다. 참고로 윈도우에서는 보통 \(역슬래시)를 사용한다.

4.1. 절대경로

루트 디렉토리부터 해당 파일까지의 경로를 표시하는 것을 절대경로라고 한다.

예를들면 /home/gymin 과 같이 표기하는 것이다.

 

4.2. 상대경로

현재 디렉토리를 기준으로 표기하는 경로를 상대경로라고 한다.

 

상대경로 절대경로
../../ /
.. /home
. /home/gymin
work 또는 ./work /home/gymin/work
work/fileB 또는 ./work/fileB /home/gymin/work/fileB
fileA 또는 ./fileA /home/gymin/fileA

. 는 현재 디렉토리 , .. 는 부모 디렉토리

두번째 위의 디렉토리로 이동하고 싶다면 ../../ 으로 이동한다.

 

4.3. pwd : 현재 디렉토리 표시 명령어

현재 위치한 디렉토리를 current directory 또는 working directory 라고 한다. 이 디렉토리를 확인하는 명령어는 pwd 으로 입력하면 다음과같이 현재 디렉토리를 확인할 수 있다. 참고로 로그인하면 사용자의 홈 디렉토리에서 시작한다. 

현재 디렉토리 명령어 pwd

 

4.4. cd : 디렉토리 이동 명령어

참고로, ~(틸드) 를 사용하면 홈 디렉터리로 이동한다.

cd ~

 

4.5. ls : 디렉토리 안의 파일 출력 명령어

 

경로 확장 기능으로 * 와 ? 를 사용할 수 있다.

기호 내용
* 임의의 문자열
? 임의의 한 문자

 

ls li* 을 입력하면 li 로 시작하는 파일 목록만 출력한다.

lib 와 libexec 의 파일 목록 출력

ls li? 을 입력하면 li로 시작하는 3글자 파일을 출력한다.

 

-(하이픈) 으로 옵션을 지정할 수 있는데, -l 옵션을 지정하면 파일의 속성과 상세정보도 출력된다.

위의 bin 파일로 간단히 정리하면 다음과 같다.

  • d: 파일 타입 (디렉토리)
    • - : 보통파일 , d : 디렉토리 , l : 심볼릭 링크
  • rwxr-xr-x : 파일모드
  • 2 : 링크수
  • root : 소유자
  • root : 소유그룹
  • 36864 : 크기
  • Sep 13 05:42 : 타임스탬프
  • bin : 파일 또는 디렉토리 명

 

-a 옵션을 지정하면 숨겨진 파일도 함께 출력된다.

ls 명령어는 기본적으로 .으로 시작하는 파일을 숨긴 파일로 판단하고 출력하지 않으나, -a 옵션을 지정하면 함께 출력된다.

 

-F 옵션을 지정하면 파일 이름뒤에 파일 종류를 의미하는 기호를 추가로 출력해준다.

종류 기호
보통 파일 표시 없음
디렉토리 /
실행가능 파일 *
심볼릭링크 @

모두 디렉토리이므로 / 이 출력되었다.

물론 동시 지정도 가능하다.

 

참고로 간격 맞춰 출력하는 -w 옵션도 있다.

반응형