리눅스 기본 명령어 모음

Linux 시스템에서 가장 자주 사용하는 기본 명령어들의 완벽 가이드


Linux 시스템에서 가장 자주 사용하는 기본 명령어들의 완벽 가이드

목표: 문서 없이 5분 안에 원하는 작업을 수행할 수 있는 수준


📁 파일 & 디렉토리 관리

파일/디렉토리 조회

ls — 목록 출력

ls              # 기본 목록
ls -l           # 상세 정보 (권한, 소유자, 크기, 날짜)
ls -la          # 숨김 파일 포함 (.으로 시작하는 파일)
ls -lh          # 사람이 읽기 쉬운 크기 (K, M, G)
ls -ltr         # 시간 역순 정렬 (최신 파일 하단)
ls -R           # 하위 디렉토리 재귀 출력
ls --color=auto # 색상으로 파일 유형 구분

출력 예시:

-rw-r--r-- 1 user group  1234 Jun 01 10:00 file.txt
drwxr-xr-x 2 user group  4096 Jun 01 09:00 directory/

필드 의미:

  • -rw-r--r-- : 파일 유형 + 권한
  • 1 : 하드링크 수
  • user : 소유자
  • group : 그룹
  • 1234 : 파일 크기 (바이트)
  • Jun 01 10:00 : 마지막 수정 시간
  • file.txt : 파일명

pwd — 현재 디렉토리

pwd              # 현재 작업 디렉토리 출력
pwd -P           # 심볼릭 링크를 따라간 실제 경로

cd — 디렉토리 이동

cd /path/to/dir  # 절대 경로
cd ../..         # 상위 디렉토리로 2단계 이동
cd ~             # 홈 디렉토리
cd -             # 이전 디렉토리 (왔다갔다 할 때 유용)
cd               # 인자 없이 실행 = 홈 디렉토리

file — 파일 유형 확인

file filename.txt     # 파일 유형 출력
file /bin/ls          # 실행 파일 정보
file -i filename.txt  # MIME 타입 출력

파일/디렉토리 생성

touch — 빈 파일 생성 / 타임스탬프 갱신

touch newfile.txt           # 빈 파일 생성
touch -t 202601011200 file  # 특정 시간으로 타임스탬프 설정

mkdir — 디렉토리 생성

mkdir dirname               # 단일 디렉토리
mkdir -p parent/child       # 상위 디렉토리까지 재귀 생성
mkdir -m 755 dirname        # 권한 지정하며 생성

cp — 복사

cp file.txt dest/           # 파일 복사
cp -r dir/ dest/            # 디렉토리 재귀 복사
cp -i file.txt dest/        # 덮어쓰기 전 확인
cp -v file.txt dest/        # 진행 상황 출력
cp -p file.txt dest/        # 권한/타임스탬프 보존
cp -a dir/ dest/            # 아카이브 모드 (권한, 링크, 타임스탬프 모두 보존)

mv — 이동 / 이름 변경

mv file.txt dest/           # 이동
mv oldname.txt newname.txt  # 이름 변경
mv -i file.txt dest/        # 덮어쓰기 전 확인
mv -f file.txt dest/        # 강제 덮어쓰기

rm — 삭제

rm file.txt                 # 파일 삭제
rm -i file.txt              # 삭제 전 확인
rm -r dir/                  # 디렉토리 재귀 삭제
rm -rf dir/                 # 강제 재귀 삭제 (주의!)
rm -v file.txt              # 삭제된 파일 출력

⚠️ 주의: rm -rf /는 시스템 전체를 삭제합니다. 절대 사용하지 마세요!


링크 생성

ln — 하드링크 / 심볼릭 링크

ln file.txt hardlink.txt    # 하드링크 (같은 inode 공유)
ln -s file.txt symlink.txt  # 심볼릭 링크 (바로가기)
ln -sf file.txt symlink.txt # 기존 링크 강제 덮어쓰기

하드링크 vs 심볼릭 링크:

특징하드링크심볼릭 링크
inode동일별도
원본 삭제 시데이터 유지깨짐 (dangling link)
디렉토리불가가능
크로스 파일시스템불가가능

🔍 파일 검색 & 조회

cat — 파일 내용 출력

cat file.txt                # 전체 내용 출력
cat -n file.txt             # 줄 번호와 함께 출력
cat file1.txt file2.txt     # 여러 파일 연결 출력
cat > file.txt              # 표준 입력을 파일로 저장 (Ctrl+D로 종료)
cat >> file.txt             # 파일 끝에 추가

less / more — 페이지 단위 조회

less file.txt               # 페이지 단위 스크롤 (위/아래 가능)
more file.txt               # 페이지 단위 (아래만 가능)

less 난바:

  • Space / Page Down — 다음 페이지
  • Page Up / b — 이전 페이지
  • /pattern — 검색 (아래로)
  • ?pattern — 검색 (위로)
  • n — 다음 검색 결과
  • N — 이전 검색 결과
  • q — 종료

head / tail — 앞/뒤 부분 출력

head file.txt               # 앞 10줄
head -n 5 file.txt          # 앞 5줄
head -c 100 file.txt        # 앞 100바이트

tail file.txt               # 뒤 10줄
tail -n 20 file.txt         # 뒤 20줄
tail -f /var/log/syslog     # 실시간 로그 모니터링 (매우 중요!)
tail -F /var/log/syslog     # 파일이 회전되어도 계속 추적

grep — 텍스트 검색

grep "pattern" file.txt          # 기본 검색
grep -i "pattern" file.txt       # 대소문자 무시
grep -v "pattern" file.txt       # 패턴 제외
grep -n "pattern" file.txt       # 줄 번호 출력
grep -r "pattern" dir/           # 디렉토리 재귀 검색
grep -E "pattern1|pattern2"      # 확장 정규식 (OR 검색)
grep -c "pattern" file.txt       # 매칭 줄 수 출력
grep -l "pattern" *.txt          # 파일명만 출력

정규식 예시:

grep "^start" file.txt        # start로 시작하는 줄
grep "end$" file.txt          # end로 끝나는 줄
grep "[0-9]" file.txt         # 숫자가 포함된 줄
grep "\bword\b" file.txt      # 정확한 단어 매칭

find — 파일 검색

find /path -name "*.txt"           # 이름으로 검색
find /path -type f                 # 파일만
find /path -type d                 # 디렉토리만
find /path -size +100M             # 100MB 이상
find /path -mtime -7               # 7일 이내 수정된 파일
find /path -user username          # 특정 사용자 소유
find /path -perm 644               # 특정 권한
find /path -name "*.log" -delete   # 검색 결과 삭제
find /path -type f -exec chmod 644 {} \;  # 검색 결과에 명령 실행

실전 예시:

# 30일 이상 된 로그 파일 삭제
find /var/log -name "*.log" -mtime +30 -delete

# 빈 디렉토리 찾기
find /path -type d -empty

# 특정 확장자 파일 크기 합계
find /path -name "*.jpg" -exec du -ch {} + | grep total$

which / whereis / locate — 명령어 위치

which ls                    # 실행 파일 경로
whereis ls                  # 실행 파일, 소스, 매뉴얼 경로
whereis -b ls               # 실행 파일만
locate filename             # 데이터베이스에서 빠른 검색
updatedb                    # locate 데이터베이스 갱신

✏️ 텍스트 처리

echo — 문자열 출력

echo "Hello World"
echo -e "Line1\nLine2"     # 이스케이프 문자 사용
echo -n "No newline"        # 개행 없이 출력
echo $PATH                  # 환경변수 출력
echo "text" > file.txt     # 파일에 저장

sort — 정렬

sort file.txt               # 알파벳 정렬
sort -r file.txt            # 역순
sort -n file.txt            # 숫자 정렬
sort -k 2 file.txt          # 2번째 필드 기준
sort -t: -k 3 -n /etc/passwd  # : 구분자로 3번째 필드 숫자 정렬
sort -u file.txt            # 중복 제거

uniq — 중복 제거

uniq file.txt               # 인접한 중복 줄 제거
uniq -c file.txt            # 중복 횟수 표시
uniq -d file.txt            # 중복된 줄만 출력
uniq -u file.txt            # 중복 없는 줄만 출력

실전 조합:

# 가장 많이 등장하는 IP Top 10
sort access.log | uniq -c | sort -rn | head -10

wc — 줄/단어/바이트 수

wc file.txt                 # 줄, 단어, 바이트
wc -l file.txt              # 줄 수만
wc -w file.txt              # 단어 수만
wc -c file.txt              # 바이트 수만
ls | wc -l                  # 파일 개수 세기

cut — 필드 추출

cut -d: -f1 /etc/passwd     # : 구분자로 1번째 필드
cut -d: -f1,3 /etc/passwd   # 1,3번째 필드
cut -c1-5 file.txt          # 1~5번째 문자
cut -c10- file.txt          # 10번째 문자부터 끝까지

tr — 문자 변환/삭제

echo "hello" | tr 'a-z' 'A-Z'   # 대문자 변환
echo "hello" | tr -d 'l'        # 'l' 삭제
echo "hello" | tr -s 'l'        # 연속 문자 압축
cat file.txt | tr '\n' ' '      # 개행을 공백으로

sed — 스트림 에디터

sed 's/old/new/' file.txt       # 첫 번째 old를 new로
sed 's/old/new/g' file.txt      # 모든 old를 new로
sed 's/old/new/2' file.txt      # 2번째 old만
sed 's/old/new/gi' file.txt     # 대소문자 무시
sed -i 's/old/new/g' file.txt   # 파일 직접 수정
sed -n '5,10p' file.txt         # 5~10줄만 출력
sed '5d' file.txt               # 5번째 줄 삭제
sed '/pattern/d' file.txt       # 패턴이 있는 줄 삭제

awk — 텍스트 처리 강력 도구

awk '{print $1}' file.txt       # 1번째 필드 출력
awk '{print $NF}' file.txt      # 마지막 필드
awk -F: '{print $1}' /etc/passwd # : 구분자
awk '{sum+=$1} END {print sum}'  # 합계 계산
awk 'NR==5' file.txt            # 5번째 줄
awk '/pattern/' file.txt        # 패턴 매칭 줄
awk '$3 > 100' file.txt        # 조건 필터링

실전 예시:

# 메모리 사용량 파싱
free -m | awk 'NR==2{printf "Memory Usage: %.2f%%\n", $3*100/$2}'

# 디스크 사용량 80% 이상인 파일시스템
df -h | awk '$5 > 80 {print $0}'

🔐 권한 관련 (기본)

chmod — 권한 변경

chmod 755 file.txt          # rwxr-xr-x
chmod u+x script.sh         # 소유자 실행 권한 추가
chmod g-w file.txt          # 그룹 쓰기 권한 제거
chmod o=r file.txt          # 기타 읽기만
chmod -R 755 dir/           # 재귀 적용

권한 숫자:

숫자권한의미
7rwx읽기, 쓰기, 실행
6rw-읽기, 쓰기
5r-x읽기, 실행
4r—읽기만
0---없음

chown — 소유자 변경

chown user file.txt         # 소유자 변경
chown user:group file.txt   # 소유자와 그룹 동시 변경
chown -R user:group dir/    # 재귀 적용
chown :group file.txt       # 그룹만 변경

📊 프로세스 관리 (기본)

ps — 프로세스 상태

ps aux                      # 모든 프로세스 상세 출력
ps -ef                      # 모든 프로세스 (표준 형식)
ps aux | grep nginx         # 특정 프로세스 검색
ps -u username              # 특정 사용자 프로세스
ps --sort=-%mem | head      # 메모리 사용량 순서

top / htop — 실시간 프로세스 모니터링

top                         # 기본 모니터링
top -u username             # 특정 사용자만

top 단축키:

  • M — 메모리 사용량 순서
  • P — CPU 사용량 순서
  • T — 실행 시간 순서
  • k — 프로세스 종료 (PID 입력)
  • q — 종료

kill — 프로세스 종료

kill PID                    # 기본 종료 (SIGTERM)
kill -9 PID                 # 강제 종료 (SIGKILL)
kill -15 PID                # 정상 종료 (SIGTERM)
kill -1 PID                 # 설정 재로드 (SIGHUP)
killall process_name        # 이름으로 종료
pkill pattern               # 패턴 매칭 종료

pgrep / pkill — 프로세스 검색/종료

pgrep nginx                 # nginx 프로세스 PID
pgrep -l nginx              # PID와 이름 함께
pgrep -u username           # 특정 사용자 프로세스
pkill -f "python app.py"    # 전체 명령줄 매칭

🌐 네트워크 기본

ping — 연결 테스트

ping google.com             # 기본 테스트
ping -c 4 google.com        # 4회만 실행
ping -i 0.5 google.com      # 0.5초 간격

curl / wget — 다운로드

curl https://example.com            # 내용 출력
curl -O https://example.com/file    # 파일 다운로드
curl -L https://example.com         # 리다이렉트 따라가기
curl -I https://example.com         # 헤더만 출력
curl -X POST -d "data" https://api  # POST 요청

wget https://example.com/file       # 파일 다운로드
wget -c https://example.com/file    # 이어 받기
wget -r https://example.com         # 재귀 다운로드

ip / ifconfig — 네트워크 인터페이스

ip addr                     # IP 주소 확인
ip link                     # 인터페이스 상태
ip route                    # 라우팅 테이블
ip neigh                    # ARP 테이블

ifconfig                    # (구식) 인터페이스 정보
ifconfig eth0               # 특정 인터페이스

ss / netstat — 소켓/포트 상태

ss -tlnp                    # TCP listening 포트 (프로세스명 포함)
ss -tulnp                   # TCP/UDP listening 포트
ss -s                       # 소켓 통계
netstat -tlnp               # (구식) 포트 상태

💾 디스크 사용량

df — 파일시스템 사용량

df -h                       # 사람이 읽기 쉬운 형식
df -T                       # 파일시스템 유형 포함
df -i                       # inode 사용량

du — 디렉토리 사용량

du -sh /path                # 총 사용량
du -sh *                    # 현재 디렉토리 항목별
du -h --max-depth=1 /path   # 1단계 깊이만

🔧 기타 유용한 명령어

history — 명령어 히스토리

history                     # 전체 히스토리
history | grep "apt"        # 특정 명령어 검색
!100                        # 100번째 명령어 실행
!!                          # 마지막 명령어 실행
!$                          # 마지막 명령어의 마지막 인자
Ctrl+R                      # 역방향 검색 (대화형)

alias — 명령어 별칭

alias                       # 현재 별칭 목록
alias ll='ls -alF'          # 별칭 설정
alias ..='cd ..'            # 유용한 별칭
unalias ll                  # 별칭 제거

추천 별칭:

alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
alias grep='grep --color=auto'
alias df='df -h'
alias du='du -h'

date — 날짜/시간

date                        # 현재 날짜/시간
date +"%Y-%m-%d"           # 형식 지정 (2026-06-01)
date +"%H:%M:%S"           # 시간만
date -d "yesterday"        # 어제 날짜
date -d "+7 days"          # 7일 후

clear / reset — 화면 정리

clear                       # 화면 지우기 (스크롤 가능)
reset                       # 터미널 완전 재설정
Ctrl+L                      # clear 단축키

🎯 파이프라인 & 리다이렉션

파이프 |

command1 | command2         # command1 출력을 command2 입력으로
ps aux | grep nginx
ls -la | less
cat file.txt | sort | uniq

리다이렉션

command > file.txt          # 출력을 파일로 (덮어쓰기)
command >> file.txt        # 출력을 파일로 (추가)
command < file.txt          # 파일을 입력으로
command 2> error.log        # 에러만 파일로
command >> output.log 2>> error.log  # 표준출력과 에러 모두 추가
command > /dev/null 2>>1   # 모든 출력 버리기

실전 예시:

# 백그라운드 실행 + 로그 저장
nohup python app.py > app.log 2>>1 &

# 에러만 확인
curl https://api 2>>1 > /dev/null

# 여러 파일 합치기
cat file1.txt file2.txt > combined.txt

📋 체크리스트

  • 파일/디렉토리 조회: ls, pwd, cd
  • 파일 조작: cat, less, head, tail
  • 검색: grep, find
  • 텍스트 처리: sed, awk, cut, sort, uniq
  • 권한: chmod, chown
  • 프로세스: ps, top, kill
  • 네트워크: ping, curl, ip, ss
  • 디스크: df, du
  • 파이프라인 & 리다이렉션

🔗 관련 노트

  • 01-02-파일-권한-관리 — 권한 상세 가이드
  • 01-01-리눅스-기본-명령어-모음 — sed, awk 심화
  • 01-04-프로세스-관리 — 프로세스 심화
  • 02-04-네트워크-설정 — 네트워크 심화
  • 리눅스-운영-체크리스트 — 일상 운영 절차

마지막 업데이트: 2026-06-01