리눅스 기초
리눅스 기초¶
1. 리눅스란?¶
리눅스는 1991년 리누스 토르발스가 개발한 오픈소스 운영체제입니다.
┌─────────────────────────────────────────────────────────┐
│ 응용 프로그램 │
│ (웹 서버, DB, 개발 도구 등) │
├─────────────────────────────────────────────────────────┤
│ 쉘 │
│ (bash, zsh, sh) │
├─────────────────────────────────────────────────────────┤
│ 리눅스 커널 │
│ (프로세스, 메모리, 파일시스템, 네트워크) │
├─────────────────────────────────────────────────────────┤
│ 하드웨어 │
│ (CPU, 메모리, 디스크, 네트워크) │
└─────────────────────────────────────────────────────────┘
리눅스의 특징¶
| 특징 | 설명 |
|---|---|
| 오픈소스 | 소스 코드 공개, 무료 사용 가능 |
| 안정성 | 서버 운영에 적합한 높은 안정성 |
| 보안 | 권한 기반 보안 모델 |
| 멀티유저 | 여러 사용자 동시 접속 지원 |
| 멀티태스킹 | 여러 프로세스 동시 실행 |
| 이식성 | 다양한 하드웨어에서 동작 |
2. 리눅스 배포판¶
리눅스 커널을 기반으로 다양한 배포판이 존재합니다.
┌──────────────────┐
│ Linux Kernel │
└────────┬─────────┘
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Debian │ │ RHEL │ │ Arch │
└──────┬───────┘ └──────┬───────┘ └──────────────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Ubuntu │ │ CentOS │
│ Mint │ │ Rocky │
└──────────────┘ │ Fedora │
└──────────────┘
주요 배포판 비교¶
| 배포판 | 기반 | 특징 | 용도 |
|---|---|---|---|
| Ubuntu | Debian | 사용 편의성, 큰 커뮤니티 | 입문자, 데스크톱, 서버 |
| Debian | - | 안정성, 엄격한 패키지 정책 | 서버 |
| CentOS/Rocky | RHEL | 엔터프라이즈급 안정성 | 기업 서버 |
| Fedora | RHEL | 최신 기술, RHEL 테스트베드 | 개발자 |
| Alpine | - | 경량화 (5MB), 보안 | 컨테이너 |
| Arch | - | 최신 패키지, DIY 철학 | 고급 사용자 |
3. 터미널과 쉘¶
터미널 (Terminal)¶
터미널은 텍스트 기반으로 컴퓨터와 상호작용하는 인터페이스입니다.
┌─────────────────────────────────────────────────────────┐
│ user@hostname:~$ │
│ │
│ ← 명령어를 입력하고 결과를 확인하는 공간 │
│ │
└─────────────────────────────────────────────────────────┘
쉘 (Shell)¶
쉘은 사용자 명령을 해석하여 커널에 전달하는 프로그램입니다.
| 쉘 | 설명 |
|---|---|
| bash | 대부분의 리눅스 기본 쉘 (Bourne Again Shell) |
| zsh | 향상된 기능, macOS 기본 쉘 |
| sh | 오리지널 쉘 (Bourne Shell) |
| fish | 사용자 친화적 쉘 |
# 현재 사용 중인 쉘 확인
echo $SHELL
출력:
/bin/bash
4. 명령어 기본 구조¶
command [options] [arguments]
│ │ │
│ │ └── 명령의 대상 (파일, 디렉토리 등)
│ └── 명령의 동작 방식 변경 (-a, --all 등)
└── 실행할 명령어
예시¶
# 기본 형태
ls
# 옵션 추가
ls -l
# 옵션 + 인자
ls -l /home
# 여러 옵션
ls -la /home
# 긴 옵션
ls --all --human-readable
옵션 형식¶
| 형식 | 예시 | 설명 |
|---|---|---|
| 짧은 옵션 | -l |
대시 + 한 글자 |
| 결합 옵션 | -la |
여러 짧은 옵션 결합 |
| 긴 옵션 | --all |
대시 두 개 + 단어 |
5. 도움말 사용법¶
man (매뉴얼 페이지)¶
# 명령어 매뉴얼 보기
man ls
man cp
man chmod
# 키워드로 검색
man -k "copy file"
man 페이지 탐색:
| 키 | 동작 |
|----|------|
| Space / f | 다음 페이지 |
| b | 이전 페이지 |
| /검색어 | 검색 |
| n | 다음 검색 결과 |
| q | 종료 |
--help 옵션¶
# 간단한 도움말
ls --help
cp --help
info¶
# 상세한 정보 (GNU 명령어)
info ls
6. 기본 명령어¶
whoami - 현재 사용자¶
whoami
출력:
ubuntu
hostname - 시스템 이름¶
hostname
출력:
my-server
date - 현재 날짜/시간¶
# 현재 날짜/시간
date
# 포맷 지정
date "+%Y-%m-%d %H:%M:%S"
출력:
2024년 1월 23일 화요일 14:30:00 KST
2024-01-23 14:30:00
cal - 달력¶
# 이번 달
cal
# 특정 연도
cal 2024
# 특정 월
cal 3 2024
clear - 화면 지우기¶
clear
# 또는 Ctrl + L
echo - 텍스트 출력¶
echo "Hello, Linux!"
echo $HOME
echo "현재 경로: $(pwd)"
7. 명령어 히스토리¶
history 명령어¶
# 히스토리 보기
history
# 최근 10개만
history 10
# 히스토리 검색
history | grep "apt"
히스토리 활용¶
| 명령 | 설명 |
|---|---|
!! |
직전 명령 실행 |
!n |
n번 히스토리 실행 |
!string |
string으로 시작하는 최근 명령 |
Ctrl + R |
히스토리 역방향 검색 |
# 직전 명령 다시 실행
!!
# sudo 붙여서 재실행
sudo !!
# 123번 명령 실행
!123
# ls로 시작하는 최근 명령
!ls
Ctrl + R (역방향 검색)¶
# Ctrl + R 누른 후 검색어 입력
(reverse-i-search)`apt': apt update
# Enter: 실행
# Ctrl + R: 다음 결과
# Ctrl + G: 취소
8. 단축키¶
커서 이동¶
| 단축키 | 동작 |
|---|---|
Ctrl + A |
줄 맨 앞으로 |
Ctrl + E |
줄 맨 뒤로 |
Ctrl + ←/→ |
단어 단위 이동 |
편집¶
| 단축키 | 동작 |
|---|---|
Ctrl + U |
커서 앞 전체 삭제 |
Ctrl + K |
커서 뒤 전체 삭제 |
Ctrl + W |
커서 앞 단어 삭제 |
Ctrl + Y |
삭제한 내용 붙여넣기 |
제어¶
| 단축키 | 동작 |
|---|---|
Ctrl + C |
실행 중인 명령 중단 |
Ctrl + D |
입력 종료 (EOF) / 로그아웃 |
Ctrl + Z |
프로세스 일시 정지 |
Ctrl + L |
화면 지우기 |
9. 탭 자동완성¶
탭 키를 사용하면 명령어와 파일명을 자동완성할 수 있습니다.
# 명령어 자동완성
sys[Tab] → systemctl
# 파일명 자동완성
cd /ho[Tab] → cd /home/
# 여러 후보가 있을 때
cd /[Tab][Tab] → 가능한 목록 표시
10. 실습 예제¶
실습 1: 시스템 정보 확인¶
# 현재 사용자 확인
whoami
# 호스트명 확인
hostname
# 현재 날짜/시간
date
# 시스템 가동 시간
uptime
# 커널 정보
uname -a
실습 2: 도움말 활용¶
# ls 매뉴얼 확인
man ls
# cp 도움말 확인
cp --help
# 키워드로 매뉴얼 검색
man -k "disk space"
실습 3: 히스토리 활용¶
# 히스토리 확인
history
# 직전 명령 재실행
!!
# Ctrl + R로 이전 명령 검색
# (Ctrl + R 누르고 검색어 입력)
다음 단계¶
02_Filesystem_Navigation.md에서 리눅스 디렉토리 구조와 탐색 명령어를 배워봅시다!