리눅스 기본 명령어 20가지 – 따라하며 익히는 터미널 입문
우분투 서버 설치를 완료했다면, 이제 본격적으로 리눅스를 터미널에서 다루는 법을 배워야 한다.
처음 보는 검은 화면, 깜빡이는 커서… 낯설고 어렵게 느껴질 수 있지만, 사실 자주 쓰는 명령어는 딱 10~20개 정도다.
이번 글에서는 리눅스에서 가장 자주 쓰이는 기본 명령어 20가지를 소개하고, 각각 실습해볼 수 있도록 예제를 함께 제공한다.
📌 터미널이란?
터미널은 명령어를 직접 입력해서 컴퓨터를 조작하는 창이다. 마우스로 클릭하는 대신, 명령어를 입력하는 것이다.
리눅스 서버는 GUI가 없기 때문에, 모든 설정과 조작을 이 터미널에서 진행하게 된다.
그럼 지금부터 명령어들을 하나씩 배워보자!
🎯 기본 명령어 학습 전략
20개가 많아 보이지만, 실제로는:
- 필수 핵심 10개 – 이것만 알아도 80% 해결
- 자주 쓰는 5개 – 서버 관리 시 필요
- 알면 좋은 5개 – 트러블슈팅 용
단계별로 익히면 부담 없다!
⭐ 필수 핵심 명령어 10개
1. pwd – 현재 디렉토리 확인
의미: Print Working Directory (현재 작업 디렉토리 출력)
pwd
출력 예시:
/home/gildong
언제 사용: 내가 지금 어디에 있는지 헷갈릴 때
2. ls – 폴더/파일 목록 보기
의미: List (목록 보기)
# 기본 사용
ls
# 자세한 정보 표시
ls -l
# 숨김 파일까지 표시
ls -a
# 조합 (가장 많이 사용)
ls -la
출력 예시:
gildong@homeserver:~$ ls -la
total 32
drwxr-xr-x 4 gildong gildong 4096 Nov 3 10:23 .
drwxr-xr-x 3 root root 4096 Nov 2 14:30 ..
-rw-r--r-- 1 gildong gildong 220 Nov 2 14:30 .bash_logout
-rw-r--r-- 1 gildong gildong 3771 Nov 2 14:30 .bashrc
drwx------ 2 gildong gildong 4096 Nov 3 10:23 .ssh
drwxr-xr-x 2 gildong gildong 4096 Nov 3 10:25 wordpress
옵션 설명:
| 옵션 | 의미 | 효과 |
|---|---|---|
| -l | long format | 권한, 크기, 날짜 등 상세 정보 |
| -a | all | 숨김 파일(. 시작) 포함 |
| -h | human-readable | 크기를 K, M, G 단위로 표시 |
| -t | time | 최신 파일 순으로 정렬 |
3. cd – 디렉토리 이동
의미: Change Directory (디렉토리 변경)
# 특정 경로로 이동
cd /var/www
# 홈 디렉토리로 이동
cd ~
# 또는 그냥
cd
# 상위 디렉토리로 이동
cd ..
# 이전 디렉토리로 되돌아가기
cd -
# 절대 경로 vs 상대 경로
cd /home/gildong/wordpress # 절대 경로
cd wordpress # 상대 경로 (현재 위치 기준)
실전 예시:
gildong@homeserver:~$ pwd
/home/gildong
gildong@homeserver:~$ cd /var/www
gildong@homeserver:/var/www$ pwd
/var/www
gildong@homeserver:/var/www$ cd ..
gildong@homeserver:/var$ pwd
/var
gildong@homeserver:/var$ cd
gildong@homeserver:~$ pwd
/home/gildong
4. mkdir – 새 폴더 만들기
의미: Make Directory (디렉토리 생성)
# 폴더 하나 생성
mkdir my-folder
# 여러 폴더 동시 생성
mkdir folder1 folder2 folder3
# 하위 폴더까지 한 번에 생성 (-p 옵션)
mkdir -p project/src/components
# 권한 지정하며 생성
mkdir -m 755 public-folder
실전 예시:
# 워드프레스 설치 준비 폴더 구조 만들기
cd ~
mkdir -p wordpress-setup/data
mkdir -p wordpress-setup/config
mkdir -p wordpress-setup/backup
# 확인
ls -R wordpress-setup
출력:
wordpress-setup:
backup config data
wordpress-setup/backup:
wordpress-setup/config:
wordpress-setup/data:
5. rm – 파일/폴더 삭제 ⚠️
의미: Remove (삭제)
⚠️ 경고: 리눅스는 휴지통이 없습니다! 삭제하면 복구 불가!
# 파일 삭제
rm file.txt
# 여러 파일 삭제
rm file1.txt file2.txt
# 폴더와 내용물 전체 삭제 (-r: recursive)
rm -r my-folder
# 확인 없이 강제 삭제 (-f: force)
rm -rf my-folder
# 삭제 전 확인 (-i: interactive)
rm -i important.txt
❌ 절대 입력하면 안 되는 명령어:
❌ sudo rm -rf / # 시스템 전체 삭제!
❌ sudo rm -rf /* # 모든 파일 삭제!
❌ rm -rf ~/* # 홈 디렉토리 전체 삭제!
안전하게 사용하는 팁:
# 삭제 전 확인하는 습관
rm -i file.txt
# 또는 -I 옵션 (3개 이상 파일 삭제 시 한 번만 확인)
rm -rI my-folder
6. cp – 파일/폴더 복사
의미: Copy (복사)
# 파일 복사
cp source.txt destination.txt
# 다른 디렉토리로 복사
cp file.txt /home/gildong/backup/
# 폴더 전체 복사 (-r: recursive)
cp -r folder1 folder2
# 속성 유지하며 복사 (-p: preserve)
cp -p config.ini backup/config.ini
# 덮어쓰기 전 확인 (-i: interactive)
cp -i file.txt backup/
실전 예시:
# 워드프레스 백업 만들기
cp -r /var/www/html/wordpress ~/backup/wordpress-$(date +%Y%m%d)
# 설정 파일 백업
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
7. mv – 파일 이동/이름 변경
의미: Move (이동)
# 파일 이동
mv file.txt /home/gildong/documents/
# 이름 변경 (같은 위치에서)
mv oldname.txt newname.txt
# 폴더 이름 변경
mv old-folder new-folder
# 여러 파일 한 곳으로 이동
mv file1.txt file2.txt file3.txt /destination/
# 덮어쓰기 전 확인
mv -i source.txt destination.txt
실전 예시:
# 로그 파일 정리
mv /var/log/nginx/access.log /var/log/nginx/access.log.old
# 프로젝트 폴더 이름 변경
mv wordpress-old wordpress-new
8. cat – 파일 내용 출력
의미: Concatenate (연결, 출력)
# 파일 내용 보기
cat readme.txt
# 여러 파일 연결해서 보기
cat file1.txt file2.txt
# 줄 번호 표시
cat -n script.sh
# 파일 합치기
cat file1.txt file2.txt > combined.txt
실전 예시:
# 설정 파일 확인
cat /etc/nginx/sites-available/default
# 로그 마지막 부분 확인 (tail과 함께 많이 사용)
cat /var/log/syslog
9. sudo – 관리자 권한으로 명령 실행
의미: Super User Do (관리자 권한으로 실행)
# 관리자 권한으로 명령 실행
sudo apt update
# 특정 사용자 권한으로 실행
sudo -u username command
# 루트 셸로 전환
sudo -i
# 또는
sudo su
# 현재 디렉토리에서 루트 권한
sudo -s
주의사항:
- 처음 사용 시 비밀번호 입력 필요
- 일정 시간(기본 15분) 동안 비밀번호 재입력 불필요
- 시스템 파일 수정 시 필수
실전 예시:
# 패키지 설치
sudo apt install nginx
# 시스템 파일 편집
sudo nano /etc/hosts
# 서비스 재시작
sudo systemctl restart nginx
10. apt – 프로그램 설치 및 업데이트
의미: Advanced Package Tool (우분투 패키지 관리자)
# 패키지 목록 업데이트 (가장 먼저!)
sudo apt update
# 설치된 패키지 업그레이드
sudo apt upgrade
# 전체 시스템 업그레이드
sudo apt full-upgrade
# 패키지 설치
sudo apt install nginx
# 여러 패키지 동시 설치
sudo apt install nginx mysql-server php
# 패키지 삭제
sudo apt remove nginx
# 설정 파일까지 완전 삭제
sudo apt purge nginx
# 불필요한 패키지 제거
sudo apt autoremove
# 패키지 검색
apt search wordpress
# 패키지 정보 확인
apt show nginx
자주 사용하는 조합:
# 업데이트 + 업그레이드 (매일 실행 권장)
sudo apt update && sudo apt upgrade -y
# 설치 + 자동 yes
sudo apt install -y docker.io
🔧 자주 쓰는 추가 명령어 5개
11. nano – 텍스트 편집기
의미: 초보자 친화적 텍스트 에디터
# 파일 편집
nano filename.txt
# 관리자 권한으로 시스템 파일 편집
sudo nano /etc/nginx/nginx.conf
nano 단축키:
| 단축키 | 기능 |
|---|---|
| Ctrl + O | 저장 (Write Out) |
| Ctrl + X | 종료 |
| Ctrl + K | 줄 잘라내기 |
| Ctrl + U | 붙여넣기 |
| Ctrl + W | 검색 |
| Ctrl + G | 도움말 |
12. grep – 텍스트 검색
의미: Global Regular Expression Print
# 파일에서 특정 문자열 검색
grep "error" /var/log/syslog
# 대소문자 구분 없이 검색 (-i)
grep -i "error" log.txt
# 여러 파일에서 검색
grep "wordpress" /var/www/html/*.php
# 재귀적으로 검색 (-r)
grep -r "database" /etc/
# 줄 번호 표시 (-n)
grep -n "port" /etc/nginx/nginx.conf
# 매칭된 줄 이후 3줄 더 보기 (-A 3)
grep -A 3 "error" log.txt
실전 예시:
# 에러 로그 찾기
grep "error" /var/log/nginx/error.log
# 특정 IP 접속 기록 찾기
grep "192.168.0.100" /var/log/nginx/access.log
# 프로세스 찾기
ps aux | grep nginx
13. find – 파일/폴더 찾기
의미: 파일 시스템에서 검색
# 현재 디렉토리에서 파일명으로 찾기
find . -name "config.php"
# 특정 디렉토리에서 찾기
find /var/www -name "*.log"
# 폴더만 찾기
find /home -type d -name "backup"
# 파일만 찾기
find /home -type f -name "*.txt"
# 7일 이상 된 파일 찾기
find /tmp -type f -mtime +7
# 크기로 찾기 (100MB 이상)
find /var/log -size +100M
실전 예시:
# 모든 PHP 파일 찾기
find /var/www/html -name "*.php"
# 큰 로그 파일 찾아서 삭제
find /var/log -name "*.log" -size +100M -delete
# 빈 폴더 찾기
find /home/gildong -type d -empty
14. wget – 파일 다운로드
의미: Web Get (웹에서 파일 받기)
# URL에서 파일 다운로드
wget https://example.com/file.zip
# 다른 이름으로 저장 (-O)
wget -O wordpress.tar.gz https://wordpress.org/latest.tar.gz
# 백그라운드 다운로드 (-b)
wget -b https://example.com/large-file.iso
# 이어받기 (-c)
wget -c https://example.com/file.zip
# 재시도 횟수 지정
wget --tries=5 https://example.com/file.zip
실전 예시:
# 워드프레스 다운로드
wget https://wordpress.org/latest.tar.gz
# Docker Compose 다운로드
sudo wget -O /usr/local/bin/docker-compose \
https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64
15. tar – 압축 파일 관리
의미: Tape Archive (압축/해제)
# 압축 풀기 (.tar.gz)
tar -xzvf file.tar.gz
# 압축하기
tar -czvf backup.tar.gz /home/gildong/wordpress
# 압축 내용 확인 (풀지 않고)
tar -tzvf file.tar.gz
# 특정 디렉토리에 압축 풀기
tar -xzvf file.tar.gz -C /target/directory
옵션 설명:
| 옵션 | 의미 |
|---|---|
| -x | 압축 풀기 (extract) |
| -c | 압축하기 (create) |
| -z | gzip 사용 |
| -v | 자세히 보기 (verbose) |
| -f | 파일명 지정 |
| -t | 내용 보기 (list) |
실전 예시:
# 워드프레스 압축 풀기
tar -xzvf wordpress-6.4.tar.gz
# 전체 백업
tar -czvf backup-$(date +%Y%m%d).tar.gz /var/www/html
💡 알면 유용한 명령어 5개
16. df – 디스크 사용량 확인
# 디스크 사용량 보기
df -h
# 특정 파일시스템만 보기
df -h /home
출력 예시:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 236G 45G 180G 20% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
17. free – 메모리 사용량 확인
# 메모리 사용량 보기
free -h
# 실시간 업데이트 (3초마다)
free -h -s 3
출력 예시:
total used free shared buff/cache available
Mem: 7.7G 2.1G 3.2G 156M 2.4G 5.2G
Swap: 2.0G 0B 2.0G
18. top / htop – 프로세스 모니터링
# 실행 중인 프로세스 보기
top
# 더 보기 좋은 버전 (설치 필요)
sudo apt install htop
htop
top 단축키:
- q: 종료
- k: 프로세스 종료
- M: 메모리 사용량 순 정렬
- P: CPU 사용량 순 정렬
19. systemctl – 서비스 관리
# 서비스 시작
sudo systemctl start nginx
# 서비스 중지
sudo systemctl stop nginx
# 서비스 재시작
sudo systemctl restart nginx
# 서비스 상태 확인
sudo systemctl status nginx
# 부팅 시 자동 시작 설정
sudo systemctl enable nginx
# 자동 시작 해제
sudo systemctl disable nginx
# 모든 서비스 목록
systemctl list-units --type=service
20. history – 명령어 히스토리
# 최근 실행한 명령어 보기
history
# 최근 20개만 보기
history 20
# 특정 명령어 검색
history | grep docker
# 히스토리 삭제
history -c
유용한 트릭:
# 이전 명령어 재실행
!!
# n번째 명령어 재실행
!100
# 가장 최근 apt 명령어 재실행
!apt
# Ctrl + R: 명령어 검색 (매우 유용!)
🎯 실전 미션: 워드프레스 설치 준비 폴더 만들기
배운 명령어를 조합해서 실제 작업을 해보자!
미션 목표
워드프레스 설치를 위한 폴더 구조를 명령어로 만들고 확인하기
Step 1: 작업 디렉토리 생성
# 홈 디렉토리로 이동
cd ~
# 현재 위치 확인
pwd
# 메인 폴더 생성
mkdir wordpress-project
# 폴더 이동
cd wordpress-project
# 위치 확인
pwd
Step 2: 하위 폴더 구조 생성
# 필요한 폴더들 생성
mkdir -p data/mysql
mkdir -p data/wordpress
mkdir config
mkdir backup
mkdir logs
# 구조 확인
ls -la
# 트리 구조로 보기 (tree 설치 필요)
sudo apt install tree -y
tree
예상 출력:
.
├── backup
├── config
├── data
│ ├── mysql
│ └── wordpress
└── logs
6 directories, 0 files
Step 3: 테스트 파일 생성 및 관리
# README 파일 생성
nano README.txt
# 다음 내용 입력 후 Ctrl+O, Ctrl+X
# "WordPress Project Setup
# Created: 2025-11-03"
# 파일 확인
cat README.txt
# 설정 파일 샘플 생성
echo "DB_HOST=localhost" > config/database.conf
echo "DB_NAME=wordpress" >> config/database.conf
echo "DB_USER=wpuser" >> config/database.conf
# 파일 내용 확인
cat config/database.conf
# 백업 폴더에 복사
cp config/database.conf backup/database.conf.backup
# 복사 확인
ls -la backup/
Step 4: 권한 설정 연습
# 현재 권한 확인
ls -la
# logs 폴더 권한 변경 (쓰기 가능하게)
chmod 755 logs
# 전체 구조 최종 확인
tree -L 2
ls -laR
미션 완료 확인
다음 구조가 만들어졌다면 성공!
~/wordpress-project/
├── README.txt
├── backup/
│ └── database.conf.backup
├── config/
│ └── database.conf
├── data/
│ ├── mysql/
│ └── wordpress/
└── logs/
⚠️ 초보자가 자주 하는 실수 & 해결법
실수 1: 중요한 파일을 rm으로 삭제
증상: 복구 불가능…
예방:
# rm 대신 trash-cli 사용 (휴지통 기능)
sudo apt install trash-cli
trash-put file.txt # 삭제 대신 휴지통으로
trash-list # 휴지통 목록
trash-restore # 복구
실수 2: sudo cd는 작동 안 함
증상: “sudo: cd: command not found”
해결:
# cd는 셸 내장 명령어라 sudo 불필요
# 대신 루트 권한으로 전환
sudo -i
cd /root/protected-folder
실수 3: apt install 전에 update 안 함
증상: “Unable to locate package”
해결:
# 항상 update 먼저!
sudo apt update
sudo apt install 패키지명
실수 4: 명령어 실행 중 멈춰서 나갈 수 없음
해결:
- Ctrl + C: 강제 종료
- Ctrl + Z: 백그라운드로 전환
- q: 종료 (top, less 등에서)
💡 실전 팁 모음
1. Tab 키 자동완성
# 파일명 자동완성
cd /var/ww[Tab] → cd /var/www/
# 명령어 자동완성
syst[Tab] → systemctl
2. 방향키 ↑↓로 이전 명령어
# 위 화살표: 이전 명령어
# 아래 화살표: 다음 명령어
3. Ctrl + R로 명령어 검색
# Ctrl + R 누른 후
(reverse-i-search)`': docker
# 'docker' 입력하면 이전 docker 명령어 검색
4. alias로 자주 쓰는 명령어 단축
# .bashrc에 추가
nano ~/.bashrc
# 파일 끝에 추가
alias ll='ls -la'
alias update='sudo apt update && sudo apt upgrade -y'
# 적용
source ~/.bashrc
# 이제 'll'만 입력해도 'ls -la' 실행됨
📥 명령어 치트시트 (프린트용)
| 카테고리 | 명령어 | 기능 |
|---|---|---|
| 탐색 | pwd | 현재 위치 |
ls -la | 파일 목록 | |
cd /path | 이동 | |
| 파일 관리 | mkdir | 폴더 생성 |
rm -rf | 삭제 (주의!) | |
cp -r | 복사 | |
mv | 이동/이름변경 | |
| 내용 보기 | cat | 파일 내용 |
nano | 편집 | |
grep | 검색 | |
| 시스템 | sudo apt update | 업데이트 |
sudo apt install | 설치 | |
sudo systemctl | 서비스 관리 | |
| 모니터링 | df -h | 디스크 |
free -h | 메모리 | |
top | 프로세스 |
📝 정리하며
이번 글에서는 리눅스를 다루는 데 꼭 필요한 20가지 기본 명령어를 알아봤다.
핵심 요약
- 필수 10개: pwd, ls, cd, mkdir, rm, cp, mv, cat, sudo, apt
- 자주 쓰는 5개: nano, grep, find, wget, tar
- 알면 좋은 5개: df, free, top, systemctl, history
이제 이 정도만 익혀도, 홈서버 운영의 기본은 갖췄다고 할 수 있다.
다음 글에서는 Docker 설치와 개념을 소개하며, 본격적으로 서버에 다양한 서비스를 올릴 수 있는 준비를 시작한다.
서버의 진짜 재미는 이제부터다. 🐳
댓글 남기기