Post

리눅스 기본 개념과 주요 명령어

리눅스의 개념과 철학부터 커널·쉘 구조, 파일 시스템, 그리고 ls, cd, cp, mv, rm, touch, cat, pwd, find, du, df, chmod, tail, vi 명령어

리눅스 기본 개념과 주요 명령어

리눅스(Linux)란 무엇인가?

정의

리눅스는 오픈소스 기반의 유닉스 계열 운영체제입니다. 1991년 핀란드 헬싱키대학의 리누스 토르발스가 커널을 개발하면서 시작되었고, GNU 프로젝트의 유틸리티들과 결합해 현재 우리가 사용하는 완전한 리눅스 시스템이 완성되었습니다.


역사

  • 1960년대: 유닉스(Unix) 최초 개발
  • 1980~90년대: 유닉스 상용화, 다양한 변종 등장
  • 1991년: 리누스 토르발스가 리눅스 커널 최초 발표
  • GNU 프로젝트와 결합 → 오픈소스 운영체제의 표준으로 자리잡음

리눅스의 철학

리눅스는 단순하고 강력한 설계 철학을 가지고 있습니다.

  • 모듈화(Modularity): 작은 프로그램(툴)을 조합해 강력한 기능을 구현
  • 모든 것은 파일이다: 디바이스, 프로세스, 소켓 등도 파일로 표현
  • 강력한 커뮤니티와 오픈소스 정신: 누구나 참여, 개선 가능

리눅스의 구조

커널(Kernel)

  • 운영체제의 핵심
  • 하드웨어 자원 관리
  • 프로세스 관리, 메모리 관리, 파일 시스템, 네트워크 관리

쉘(Shell)

  • 사용자와 커널 간의 인터페이스
  • 명령어를 해석해 커널에 전달
  • 주요 쉘: Bash, Zsh, Fish

파일 시스템

  • 트리 형태의 계층 구조
  • 루트 디렉토리 /를 기준으로 하위 디렉토리 구성
  • 주요 디렉토리:
    • /etc: 설정 파일
    • /home: 사용자 디렉토리
    • /bin, /usr/bin: 실행 파일
    • /var: 로그, 가변 데이터
    • /dev: 장치 파일

리눅스의 주요 특징

  • 무료 및 오픈소스
  • 높은 보안성과 안정성
  • 다양한 하드웨어 지원
  • 사용자의 필요에 맞게 커스터마이징 가능

리눅스 배포판(Distro)

리눅스는 다양한 목적에 맞춰 배포판이 존재합니다.

배포판특징
Ubuntu사용자 친화적, 데스크탑/서버
CentOS / RHEL기업용 서버, 안정성 중심
Debian순수 오픈소스 정책, 서버 중심
Fedora최신 기능 실험, 커뮤니티 중심
Arch Linux고급 사용자 대상, 최소 설치

리눅스 기본 파일 시스템 구조

  • /: 루트 디렉토리
  • /home: 사용자 홈 디렉토리
  • /etc: 시스템 설정
  • /bin, /usr/bin: 실행 파일
  • /dev: 장치 파일

쉘(Shell)이란?

  • 사용자가 입력한 명령어를 커널로 전달
  • 대표적으로 bash, zsh, sh 등이 있음

리눅스 필수 명령어 정리

아래부터는 실제 리눅스에서 자주 사용하는 명령어와 옵션, 사용법을 아주 상세하게 정리합니다.


ls 명령어

디렉토리 내용(파일 목록)을 출력

기본 사용법

1
ls
  • 현재 디렉토리의 파일과 폴더를 나열

주요 옵션

옵션설명예제
-l상세 정보 출력ls -l
-a숨김 파일까지 출력ls -a
-h사람이 읽기 쉬운 크기 단위ls -lh
-R하위 디렉토리까지 재귀 출력ls -R
-t수정 시간 순으로 정렬ls -lt
-S크기 순으로 정렬ls -lS

조합 예제

1
ls -alh

cd 명령어

디렉토리 이동

사용 예제

1
2
3
4
5
cd /home/jaden         # 절대경로 이동
cd projects            # 상대경로 이동
cd ..                  # 상위 디렉토리
cd ~                   # 홈 디렉토리
cd -                   # 직전 디렉토리

환경 변수

  • $HOME: 기본 홈 디렉토리
  • $OLDPWD: 직전 디렉토리

cp 명령어

파일 또는 디렉토리 복사

기본 문법

1
cp [옵션] 원본 대상

예제

1
2
3
cp file1.txt file2.txt           # 파일 복사
cp -r dir1 dir2                  # 디렉토리 복사
cp -rupv source_dir/ dest_dir/   # 옵션 조합
옵션설명
-r디렉토리 재귀 복사
-i덮어쓰기 전 확인
-f강제 덮어쓰기
-u최신 파일만 복사
-v진행상황 출력
-p속성 유지

mv 명령어

파일/디렉토리 이동 또는 이름 변경

예제

1
2
3
mv old_name.txt new_name.txt
mv file.txt /path/to/directory/
mv file1.txt file2.txt /path/
옵션설명
-i덮어쓰기 전 확인
-f강제 덮어쓰기
-v진행상황 출력

rm 명령어

파일/디렉토리 삭제

예제

1
2
3
rm file.txt                 # 파일 삭제
rm -r myfolder              # 디렉토리 삭제
rm -rf old_backup           # 강제 재귀 삭제
옵션설명
-r디렉토리 재귀 삭제
-f강제 삭제
-i삭제 전 확인

touch 명령어

빈 파일 생성 또는 수정 시간 변경

예제

1
2
3
4
touch newfile.txt
touch file1 file2 file3
touch -t 202507131230.00 file.txt
touch -c existing.txt
옵션설명
-c없으면 새로 생성하지 않음
-t시간 지정
-a접근 시간만 변경
-m수정 시간만 변경
-d문자열로 시간 지정

cat 명령어

파일 내용 출력, 결합

예제

1
2
3
cat file.txt
cat file1.txt file2.txt
cat file1.txt file2.txt > merged.txt
옵션설명
-n줄 번호 표시
-b공백 제외 줄 번호
-s연속 빈 줄 축약
-E줄 끝 표시
-T탭 표시

pwd 명령어

현재 디렉토리 경로 출력

예제

1
2
pwd
pwd -P
  • -L: 논리 경로(기본)
  • -P: 실제 물리 경로

find 명령어

파일 검색

예제

1
2
3
4
5
6
find /home/jaden -name "*.txt"
find . -type d
find /var/log -size +100M
find /etc -mtime -7
find . -name "*.log" -delete
find . -type f -exec chmod 644 {} \;
조건설명
-name이름 패턴
-type타입(f: 파일, d: 디렉토리)
-size크기 조건
-mtime수정 시간
-user소유자
-perm권한

du 명령어

디스크 사용량 확인

예제

1
2
3
4
5
du
du -h
du -sh *
du -a
du -d 1
옵션설명
-h사람이 읽기 쉬운 단위
-s총합만 표시
-a모든 파일 표시
-d n깊이 제한
-c총합 추가 표시

df 명령어

디스크 사용 현황 확인

예제

1
2
3
4
5
df
df -h
df -T
df -i
df /home
옵션설명
-h사람이 읽기 쉬운 단위
-T파일시스템 타입 표시
-iinode 정보 표시
-a마운트 해제된 FS 포함

chmod 명령어

파일/디렉토리 권한 변경

예제

1
2
3
4
5
chmod u+x script.sh
chmod g-w file.txt
chmod o=r file.txt
chmod 755 script.sh
chmod -R 755 /var/www
기호의미
r읽기(4)
w쓰기(2)
x실행(1)

tail 명령어

파일 마지막 N줄 출력

예제

1
2
3
tail file.log
tail -n 20 file.log
tail -f /var/log/syslog
옵션설명
-n줄 수 지정
-f실시간 출력
-q파일명 헤더 생략
-c바이트 수 지정

vi 에디터

  • 리눅스 대표 텍스트 편집기
  • 3가지 모드:

    • 명령 모드
    • 입력 모드
    • 마지막 줄 모드
명령설명
i, a, o입력 모드 진입
Esc명령 모드로 전환
:w저장
:q종료
:wq저장 후 종료
dd한 줄 삭제
yy한 줄 복사
p붙여넣기
u실행 취소
/문자열검색
:%s/old/new/g전체 치환
This post is licensed under CC BY 4.0 by the author.