리눅스 기본 개념과 주요 명령어
리눅스의 개념과 철학부터 커널·쉘 구조, 파일 시스템, 그리고 ls, cd, cp, mv, rm, touch, cat, pwd, find, du, df, chmod, tail, vi 명령어
Posted Updated By mminzy22 views 10 min read
리눅스(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 명령어
디렉토리 내용(파일 목록)을 출력
기본 사용법
주요 옵션
옵션 | 설명 | 예제 |
---|
-l | 상세 정보 출력 | ls -l |
-a | 숨김 파일까지 출력 | ls -a |
-h | 사람이 읽기 쉬운 크기 단위 | ls -lh |
-R | 하위 디렉토리까지 재귀 출력 | ls -R |
-t | 수정 시간 순으로 정렬 | ls -lt |
-S | 크기 순으로 정렬 | ls -lS |
조합 예제
cd 명령어
디렉토리 이동
사용 예제
1
2
3
4
5
| cd /home/jaden # 절대경로 이동
cd projects # 상대경로 이동
cd .. # 상위 디렉토리
cd ~ # 홈 디렉토리
cd - # 직전 디렉토리
|
환경 변수
$HOME
: 기본 홈 디렉토리$OLDPWD
: 직전 디렉토리
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 명령어
현재 디렉토리 경로 출력
예제
-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 | 파일시스템 타입 표시 |
-i | inode 정보 표시 |
-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
|
tail 명령어
파일 마지막 N줄 출력
예제
1
2
3
| tail file.log
tail -n 20 file.log
tail -f /var/log/syslog
|
옵션 | 설명 |
---|
-n | 줄 수 지정 |
-f | 실시간 출력 |
-q | 파일명 헤더 생략 |
-c | 바이트 수 지정 |
vi 에디터
명령 | 설명 |
---|
i , a , o | 입력 모드 진입 |
Esc | 명령 모드로 전환 |
:w | 저장 |
:q | 종료 |
:wq | 저장 후 종료 |
dd | 한 줄 삭제 |
yy | 한 줄 복사 |
p | 붙여넣기 |
u | 실행 취소 |
/문자열 | 검색 |
:%s/old/new/g | 전체 치환 |