Notice
Recent Posts
Recent Comments
Link
승코딩당당당
[리눅스] 리눅스 기초 정리 (파일, 디렉터리, 셸) 본문
리눅스는 서버 환경을 비롯해 다양한 시스템에서 널리 사용되는 운영체제로,
기본 개념을 정확히 이해하는 것이 이후 시스템 프로그래밍이나 서버 관리 학습의 기초가 된다.
이 글에서는 리눅스의 전반적인 구조를 시작으로 커널과 셸의 역할을 살펴보고,
리눅스 파일 시스템의 특징과 파일·디렉터리의 종류, 계층 구조를 정리한다.
또한 절대 경로와 상대 경로의 차이, 작업 디렉터리와 홈 디렉터리 개념을 함께 정리하여
리눅스 환경에서 파일을 다루는 기본적인 감각을 익히는 것을 목표로 한다.
마지막으로 셸의 기능과 종류를 통해 사용자가 리눅스 시스템과 어떻게 상호작용하는지 이해해본다.
리눅스 기초
- 리눅스의 특징
- 리눅스는 공개 소프트웨어이며 무료로 사용할 수 있다.
- 유닉스와의 완벽한 호환성을 유지한다.
- 서버용 운영체제로 많이 사용된다.
- 편리한 GUI 환경을 제공한다.
- 리눅스의 구조
- 커널: 리눅스의 핵심
- 프로세스/메모리/파일 시스템/장치 관리
- 컴퓨터의 모든 자원 초기화 및 제어 기능
- 셸: 사용자 인터페이스
- 명령 해석
- 프로그래밍 기능
- 리눅스 기본 셸: 배시 셸 (리눅스 셸)
- 응용 프로그램
- 각종 프로그래밍 개발 도구
- 문서 편집 도구
- 네트워크 관련 도구 등
- 커널: 리눅스의 핵심
파일 및 폴더 다루기
리눅스 파일의 종류와 특징
- 파일의 종류
- 파일: 관련 있는 정보들의 집합
- 리눅스는 파일을 효과적으로 관리하기 위해 디렉터리를 사용
- 리눅스에서 파일은 사용 목적에 따라 일반 파일, 디렉터리, 심볼릭 링크, 장치 파일로 구분
- 일반 파일(Regular File)
- 데이터를 저장하는 데 주로 사용
- 각종 텍스트 파일, 실행 파일, 이미지 파일 등 리눅스에서 사용하는 대부분의 파일은 일반 파일에 해당
- 실행 파일이나 이미지 파일의 경우 바이너리 형태로 데이터가 저장되어 바이너리 파일이라고 함
- 텍스트 파일은 문서 편집기를 사용하여 내용을 보거나 편집할 수 있으나, 실행 파일이나 이미지 파일의 경우 해당 파일의 내용을 확인할 수 있는 특정 응용 프로그램이 있어야 확인할 수 있음
- 디렉터리(Directory)
- 리눅스에서는 디렉터리도 파일로 취급
- 디렉터리 파일에는 해당 디렉터리에 저장된 파일이나 하위 디렉터리에 대한 정보가 저장
- 심볼릭 링크
- 원본 파일을 대신하여 다른 이름으로 파일명을 지정한 것 (윈도의 바로가기와 비슷)
- 장치 파일
- 리눅스에서는 하드디스크나 키보드 같은 각종 장치도 파일로 취급
디렉터리 계층 구조
- 리눅스에서는 파일을 효율적으로 관리하기 위해 디렉터리를 계층적으로 구성 → 트리(tree) 구조
- 모든 디렉터리의 출발점은 루트(root, 뿌리) 디렉터리이며, 빗금(/, 슬래시)으로 표시
- 하위 디렉터리(서브 디렉터리): 디렉터리 아래에 있는 디렉터리 (bin, etc, usr, home, boot)
- 루트 디렉터리를 제외하고 모든 디렉터리에는 부모 디렉터리가 있음

- 루트 디렉터리의 서브 디렉터리 ls -F /
- /: 해당 파일이 디렉터리임을 표시
- @: 심볼릭 링크
- 작업 디렉터리
- 현재 사용 중인 디렉터리를 작업 디렉터리(working directory) 또는 현재 디렉터리(current directory)라고 함
- 현재 디렉터리는 “.” 기호로 표시
- 현재 디렉터리의 위치는 pwd 명령으로 확인
- 홈 디렉터리
- 각 사용자에게 할당된 디렉터리로 처음 사용자 계정을 만들 때 지정
- 사용자는 자신의 홈 디렉터리 아래에 파일이나 서브 디렉터리를 생성하며 작업 가능
- 홈 디렉터리는 ‘~’ 기호로 표시: ~user1

- 경로명
- 파일 시스템에서 디렉터리 계층 구조에 있는 특정 파일이나 디렉터리의 위치 표시
- 경로명에서 각 경로를 구분하는 구분자로 슬래시(/)를 사용
- 경로명에서 가장 앞에 있는 /는 루트 디렉터리를 뜻하지만 경로명 중간에 있는 /는 구분자
- 예: /usr/bin/ls 에서 맨 앞의 /는 루트 디렉터리를 의미하고, 중간에 있는 / 두 개는 디렉터리 이름과 파일 이름을 구분하는 구분자
- 절대 경로명
- 항상 루트(/) 디렉터리부터 시작
- 반드시 /로 시작한다
- / 디렉터리부터 시작하여 특정 파일이나 디렉터리의 위치까지 이동하면서 거치게 되는 모든 중간 디렉터리의 이름을 표시
- 특정 위치를 가리키는 절대 경로명은 항상 동일
- 상대 경로명
- 현재 디렉터리를 기준으로 시작
- / 이외의 문자로 시작
- 현재 디렉터리를 기준으로 서브 디렉터리로 내려가면 그냥 서브 디렉터리의 이름을 추가
- 현재 디렉터리를 기준으로 상위 디렉터리로 가려면 ..을 추가
- 상대 경로명은 현재 디렉터리가 어디냐에 따라 달라짐
- 파일과 디렉터리 이름 규칙
- 파일과 디렉터리 이름에는 /를 사용할 수 없다.
/는 경로명에서 구분자로 사용하기 때문이다. - 파일과 디렉터리 이름에는 알파벳, 숫자, 붙임표(-), 밑줄(_), 점(.)만 사용한다.
- 파일과 디렉터리 이름에는 공백 문자, *, |, “, ‘, @, #, $, %, ^, & 등을 사용하면 안 된다.
- 파일과 디렉터리 이름의 영문자는 대문자와 소문자를 구별하여 다른 글자로 취급한다.
- 파일과 디렉터리 이름이 ‘.’으로 시작하면 숨김 파일로 간주한다.
- 파일과 디렉터리 이름에는 /를 사용할 수 없다.
- 파일 이름 예
- 좋은 이름: game.txt, hello.c, test, sample11
- 나쁜 이름: &game, *dir, my home, game\
- 사용할 수 없는 이름: myhome/, test, bad/name
셸 사용하기
셸의 기능과 종류
- 셸의 기능
- 명령어 해석기 기능, 프로그래밍 기능, 사용자 환경 설정 기능
- 명령어 해석기 기능
- 사용자와 커널 사이에서 명령을 해석하여 전달하는 해석기(interpreter)와 번역기(translator) 기능
- 사용자가 로그인하면 셸이 자동으로 실행되어 사용자가 명령을 입력하기를 기다림 → 로그인 셸
- 로그인 셸은 /etc/passwd 파일에 사용자별로 지정
- 프롬프트: 셸이 사용자의 명령을 기다리고 있음을 나타내는 표시
- 프로그래밍 기능
- 셸은 자체 내에 프로그래밍 기능이 있어 반복적으로 수행하는 작업을 하나의 프로그램으로 작성 가능
- 셸 프로그램을 셸 스크립트라고 함
- 사용자 환경 설정 기능
- 사용자 환경을 설정할 수 있도록 초기화 파일 기능을 제공
- 초기화 파일에는 명령을 찾아오는 경로를 설정하거나, 파일과 디렉터리를 새로 생성할 때 기본 권한을 설정하거나, 다양한 환경 변수 등을 설정
- 셸의 종류
- 본 셸, 콘 셸, C 셸, 배시 셸, 대시 셸
'개발 > 임베디드' 카테고리의 다른 글
| [리눅스] 리눅스 커널: 예외처리와 인터럽트 (0) | 2026.02.12 |
|---|---|
| [리눅스] 리눅스 커널: 메모리 (0) | 2026.02.12 |
| [STM32] PWM을 이용하여 LED 밝기 제어 (0) | 2026.02.09 |
| [임베디드] Clock 이해 및 Timer 활용 (1) | 2026.02.09 |
| [STM32] VDDA 보정 기반 LM35 온도 측정 (ADC+AT Command) (1) | 2026.02.08 |