리눅스 기본 명령어 모음
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/ # 재귀 적용
권한 숫자:
| 숫자 | 권한 | 의미 |
|---|---|---|
| 7 | rwx | 읽기, 쓰기, 실행 |
| 6 | rw- | 읽기, 쓰기 |
| 5 | r-x | 읽기, 실행 |
| 4 | r— | 읽기만 |
| 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