리눅스 - 셸, 디렉터리, 링크

TaekJun Jung·2025년 12월 22일

Linux

목록 보기
1/1

리눅스에서는 사용자가 커널을 직접 조작할 수 없게 되어 있음.

둘 사이에서 명령어를 받아들이고 커널의 실행 결과를 출력하는 소프트웨어 필요 →

셸은 커널의 인터페이스에 해당.


터미널과 셸

터미널 에뮬레이터와 셸은 완전히 다른 소프트웨어.

ex) 윈도에서 리눅스로 원격 로그인하면 터미널 에뮬레이터는 윈도 머신,
셸은 리눅스 머신에서 돌아감.

터미널 에뮬레이터는 입출력 화면을 제공만 하는 소프트웨어.

리눅스 머신에서 돌아가는 셸의 입출력을 제공하는 소프트웨어가 바로 터미널 에뮬레이터.


디렉터리

윈도에서는 물리 디스크가 2개 있다면 디렉터리 트리도 2개이다.

하지만, 리눅스에서는 언제나 시스템 전체에 단 하나의 트리만 가지게 됨.

디스크가 여러 개 있을 때 루트 디렉터리의 어딘가에 해당 디스크의 디렉터리가 연결됨.

→ 디스크의 디렉터리를 연결하는 것을 마운트라고 함.

각 디렉터리의 역할

FHS(Filesystem Hierarchy Standard) 표준 사양을 따름.

/bin

  • 일반 사용자 및 관리자가 사용하는 명령어의 실행 파일 배치
  • 특히 시스템과 관련된 중요도가 높은 명령어 포함

/dev

  • 디바이스 파일이 배치
  • 디스크나 키보드 등 하드웨어를 다루기 위한 특수 파일

/home

  • 사용자별로 할당되는 홈 디렉터리가 배치되는 디렉터리
  • 사용자 이름이 디렉터리 이름으로 사용

/sbin

  • /bin와 비슷하게 실행 파일을 포함하는 디렉터리
  • 관리자용 명령어가 포함(shutdown, …)

/tmp

  • 임시 파일이 들어 있는 디렉터리
  • 애플리케이션 실행 중 임시로 작업 결과를 파일로 보존할 때 보통 이 디렉터리에 저장
  • 중요한 파일을 /tmp에 보관하면 안 됨(정기적으로 이 디렉터리 안의 파일 삭제하도록 설정된 배포판이 있음)

/usr

  • 설치한 애플리케이션의 실행 파일, 문서, 라이브러리 등이 이 디렉터리에 포함
  • /usr 아래에는 bin, sbin, etc 등이 있어 루트 디렉터리와 구조 비슷

var

  • 변화하는(variable) 데이터를 저장하기 위한 디렉터리
  • 애플리케이션 실행 중에 만들어진 데이터나 로그, 메일 등이 이곳에 저장
  • 많은 파일이 기록되므로 용량 부족해질 수 있음

링크

리눅스의 파일 시스템에서는 파일에 별명을 붙이는 것이 가능 → 링크라고 부르며 별명을 붙이는 것을 ‘링크를 생성한다’ 라고 함.

하드 링크와 심볼릭 링크 두 종류가 있음. 보통 심볼릭 링크가 많이 사용되며 하드 링크가 필요한 경우는 많지 않음.


하드 링크

$ cp /etc/crontab file1
$ ln file1 file2
$ cat file2

// (file1의 내용 출력)

하드 링크란 한 파일 원본에 이름을 여러 개 붙이는 기능

$ rm file1
$ ls
file2
$ cat file2

// (file1의 내용 출력)

파일 자체는 모든 하드 링크가 없어져야 삭제됨


심볼릭 링크

디렉터리는 하드 링크 X, 서로 다른 디스크에 걸쳐서 만들 수 없음.
심볼릭 링크는 제한 없음

ln 명령어를 사용할 때 -s 옵션 붙이면 심볼릭 링크 생성.

$ cp /etc/crontab file1
$ ln -s file1 file2
$ ls -l

어떤 파일에 연결되었는지 화살표로 표시됨.

심볼릭 링크란 원본 파일에 대한 정보가 담긴 작은 특수 파일이며 하드 링크와 달리 원본과 구별됨.

심볼릭 링크를 남겨두고 원본 파일을 삭제하면 링크가 깨지고, 깨진 파일 실행하면 오류 발생.

링크가 유용한 경우

긴 경로 명을 짧게

$ ln -s local/work/code/project/source source
$ cd source // <- 긴 경로명에 쉽게 이동 가능

여러 버전의 프로그램이 있는 경우

프로그램을 설치 할 때 디렉터리 이름에 버전 정보를 붙여 여러 버전의 소프트웨어를 배치하는 경우가 있음

latest → v1.0.1

v1.0.0

v1.0.1

소프트웨어를 사용할 때 각 버전의 경로를 직접 지정하지 않고 심볼릭 링크인 latest를 사용하면 연결된 버전 사용 가능.

profile
e4 best by test

0개의 댓글