리눅스 기본 명령어 20가지 – 따라하며 익히는 터미널 입문

목차

리눅스 기본 명령어 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

옵션 설명:

옵션의미효과
-llong format권한, 크기, 날짜 등 상세 정보
-aall숨김 파일(. 시작) 포함
-hhuman-readable크기를 K, M, G 단위로 표시
-ttime최신 파일 순으로 정렬

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)
-zgzip 사용
-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 설치와 개념을 소개하며, 본격적으로 서버에 다양한 서비스를 올릴 수 있는 준비를 시작한다.

서버의 진짜 재미는 이제부터다. 🐳

댓글 남기기

댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.