리눅스 기초

리눅스 기초

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에서 리눅스 디렉토리 구조와 탐색 명령어를 배워봅시다!

to navigate between lessons