Linux 필수 명령어 - 자주 쓰는 실전 커맨드 정리
핵심 요약
3줄 요약
- Linux 작업의 90%는 자주 쓰는 핵심 명령어로 해결 가능
- 파일 관리, 텍스트 처리, 시스템 모니터링, 네트워크, 권한 관리가 핵심
- GUI 도구가 없는 서버 환경에서는 필수 기술
읽는 시간: 20분 | 난이도: 초급 | 환경: Linux/macOS 터미널
참고 자료
문제 상황
Linux를 처음 접하면 수백 개의 명령어에 압도되지만,
막상 일상에서 사용하는 Linux 명령어는 한정되어 있습니다.
그렇지만 인간은 망각의 동물로서, 저도 가끔씩 헷갈려서 인터넷에 검색할 때가 종종 있었습니다.
해결 방법
그래서 카테고리별로 가장 자주 쓰는 명령어를 모두 정리했습니다.
1. 파일/디렉토리 관리
ls - 파일 목록 보기
# 기본 사용ls
# 숨김 파일 포함, 상세 정보ls -la
# 최신 파일 순 정렬ls -ltcd - 디렉토리 이동
# 홈 디렉토리로cd ~
# 이전 디렉토리로cd -
# 상위 디렉토리로cd ..pwd - 현재 위치 확인
pwdmkdir - 디렉토리 생성
# 단일 디렉토리mkdir myproject
# 중첩 디렉토리 한 번에mkdir -p project/src/componentscp - 파일 복사
# 파일 복사cp source.txt backup.txt
# 디렉토리 전체 복사cp -r old_folder new_foldermv - 이동/이름 변경
# 파일 이동mv file.txt /home/user/docs/
# 이름 변경mv old_name.txt new_name.txtrm - 삭제
# 파일 삭제rm unwanted.txt
# 디렉토리 전체 삭제rm -rf old_project
# 확인하며 삭제rm -i file.txtfind - 파일 검색
# 이름으로 찾기find . -name "*.log"
# 7일 이상 된 파일find . -mtime +7
# 큰 파일 찾기 (100MB 이상)find . -size +100Mtouch - 파일 생성/타임스탬프 변경
# 빈 파일 생성touch newfile.txt
# 여러 파일 동시 생성touch file1.txt file2.txt file3.txt
# 타임스탬프만 업데이트touch existing_file.txtln - 링크 생성
# 심볼릭 링크 생성 (가장 자주 사용)ln -s /path/to/original /path/to/link
# 하드 링크 생성ln original.txt hardlink.txt
# 심볼릭 링크 확인ls -l link_name2. 텍스트 처리
cat - 파일 내용 보기
# 전체 내용 출력cat file.txt
# 여러 파일 합치기cat file1.txt file2.txt > combined.txtgrep - 텍스트 검색
# 기본 검색grep "error" log.txt
# 대소문자 구분 없이grep -i "ERROR" log.txt
# 라인 번호 포함grep -n "TODO" code.jshead - 앞부분 보기
# 기본 10줄head file.txt
# 처음 3줄만head -n 3 file.txttail - 끝부분 보기
# 마지막 10줄tail file.txt
# 실시간 로그 확인tail -f /var/log/app.logless - 페이지 단위로 보기
less large_file.txt# Space: 다음 페이지, q: 종료more - 간단한 페이지 보기
more file.txt# Space: 다음 페이지, q: 종료echo - 텍스트 출력
# 기본 출력echo "Hello World"
# 파일에 쓰기 (덮어쓰기)echo "내용" > file.txt
# 파일에 추가echo "새 줄" >> file.txt
# 변수 출력echo $HOMEnano - 간단한 텍스트 편집기
# 파일 편집nano file.txt
# 편집 후 저장: Ctrl+O, 종료: Ctrl+X# 검색: Ctrl+Wvim - 강력한 텍스트 편집기
# 파일 편집vim file.txt
# 기본 명령어:# i: 입력 모드, ESC: 명령 모드# :w 저장, :q 종료, :wq 저장 후 종료# :q! 저장 없이 강제 종료wc - 줄/단어/바이트 수
# 줄 수wc -l file.txt
# 단어 수wc -w file.txt
# 전체 통계wc file.txtsort - 정렬
# 기본 정렬sort names.txt
# 숫자 정렬sort -n scores.txt
# 중복 제거(정렬 후)sort file.txt | uniquniq - 중복 제거/카운트
# 연속 중복 제거(정렬 후 사용 권장)uniq file.txt
# 중복 카운트uniq -c file.txtcut - 컬럼 추출
# 콤마 구분 2번째 컬럼cut -d ',' -f 2 data.csv
# 문자 범위 추출cut -c 1-5 file.txttr - 문자 변환
# 소문자를 대문자로tr 'a-z' 'A-Z' < file.txt
# 공백을 줄바꿈으로tr ' ' '\n' < words.txtawk - 필드 처리
# 1, 3번째 필드 출력awk '{print $1, $3}' file.txt
# 특정 조건 필터링awk '$3 > 100 {print $0}' data.txtsed - 스트림 편집
# 치환sed 's/old/new/g' file.txt
# 특정 줄 출력sed -n '1,5p' file.txttee - 출력 복사
# 화면 출력 + 파일 저장command | tee output.log
# 이어쓰기command | tee -a output.logxargs - 표준입력 인수화
# 결과를 인수로 전달find . -name "*.log" | xargs rm
# 빈 줄 처리printf "a\nb\n" | xargs -n 1 echodiff - 파일 비교
# 기본 비교diff file1.txt file2.txt
# 유니파이드 포맷diff -u old.txt new.txt3. 시스템 모니터링
ps - 프로세스 목록
# 내 프로세스ps
# 모든 프로세스 상세 정보ps aux
# 특정 프로세스 찾기ps aux | grep nginxtop - 실시간 모니터링
top# q: 종료, M: 메모리순, P: CPU순htop - 향상된 모니터링
htop# 방향키로 선택, F9로 종료uptime - 가동 시간/로드 평균
uptimedf - 디스크 용량
# 기본 사용df -h# 출력: 각 파티션의 사용량du - 디렉토리 용량
# 현재 디렉토리 크기du -sh .
# 하위 디렉토리별 크기du -h --max-depth=1free - 메모리 사용량
free -h# 출력: 총 메모리, 사용 중, 여유 공간vmstat - 시스템 상태 요약
vmstat 1iostat - 디스크 I/O
iostat -xz 1lsof - 열린 파일/포트
# 포트 사용 프로세스 확인lsof -i :8080
# 특정 프로세스 파일 확인lsof -p 1234kill - 프로세스 종료
# 정상 종료kill 1234
# 강제 종료kill -9 1234killall - 이름으로 종료
killall nginxsystemctl - 서비스 관리 (systemd)
# 상태 확인systemctl status nginx
# 시작/중지/재시작sudo systemctl start nginxsudo systemctl stop nginxsudo systemctl restart nginxjournalctl - 시스템 로그
# 최근 로그journalctl -n 100
# 특정 서비스 로그journalctl -u nginxdmesg - 커널 로그
dmesg | tail4. 권한 관리
kill - 프로세스 종료
# 정상 종료kill 1234
# 강제 종료kill -9 1234sudo - 관리자 권한으로 실행
# 관리자 권한으로 명령 실행sudo apt update
# 파일 편집sudo nano /etc/hosts
# 이전 명령어를 sudo로 재실행sudo !!
# root 쉘 시작sudo -ichmod - 권한 변경
# 실행 권한 추가chmod +x script.sh
# 숫자로 설정 (rwxr-xr-x)chmod 755 file.txt
# 모두에게 읽기 권한chmod a+r file.txtchown - 소유자 변경
# 소유자 변경sudo chown user:group file.txt
# 디렉토리 전체sudo chown -R user:group /var/www5. 네트워크
curl - HTTP 요청
# 웹 페이지 가져오기curl https://api.example.com
# 파일 다운로드curl -O https://example.com/file.zipping - 연결 테스트
ping google.com# Ctrl+C로 중단
# 특정 횟수만 실행ping -c 4 google.comwget - 파일 다운로드
# 파일 다운로드wget https://example.com/file.zip
# 이어받기wget -c https://example.com/large-file.iso
# 백그라운드 다운로드wget -b https://example.com/file.zipssh - 원격 서버 접속
# 기본 접속
# 특정 포트로 접속
# SSH 키로 접속scp - 원격 파일 복사
# 로컬 → 원격
# 원격 → 로컬
# 디렉토리 전체 복사rsync - 빠른 동기화 복사
# 로컬 → 원격 동기화rsync -avz ./local/ user@server:/path/
# 삭제 반영rsync -avz --delete ./local/ user@server:/path/ip - 네트워크 인터페이스
# 인터페이스 확인ip addr
# 라우팅 확인ip routess - 소켓/포트 확인
# 리스닝 포트ss -lntpnslookup/dig - DNS 조회
nslookup example.comdig example.comtraceroute - 경로 추적
traceroute example.com6. 압축
tar - 압축/해제
# 압축하기tar -czf archive.tar.gz folder/
# 압축 풀기tar -xzf archive.tar.gz
# 내용 확인만tar -tzf archive.tar.gzgzip - 파일 압축
# 압축gzip file.txt# 생성: file.txt.gz
# 해제gunzip file.txt.gz
# 압축률 지정 (1: 빠름, 9: 최대)gzip -9 file.txtzip/unzip - ZIP 압축
# 파일 압축zip archive.zip file1.txt file2.txt
# 디렉토리 압축zip -r archive.zip folder/
# 압축 해제unzip archive.zip
# 특정 디렉토리에 압축 해제unzip archive.zip -d /path/to/dir7. 시스템 정보 및 유틸리티
man - 매뉴얼 보기
# 명령어 매뉴얼man ls
# 검색man -k keyword
# 특정 섹션 매뉴얼man 5 passwdhistory - 명령어 히스토리
# 최근 명령어 보기history
# 최근 20개만history 20
# 특정 명령어 검색history | grep ssh
# 히스토리 번호로 재실행!123which - 명령어 위치 찾기
# 명령어 실행 파일 위치which python
# 모든 위치 찾기which -a pythonwhereis - 명령어 관련 파일 찾기
# 바이너리, 소스, 매뉴얼 위치whereis ls
# 바이너리만whereis -b lsuname - 시스템 정보
# 커널 이름uname
# 모든 정보uname -a
# 커널 버전uname -r
# 아키텍처uname -mwhoami - 현재 사용자
# 현재 로그인 사용자whoami
# 상세 정보idalias - 명령어 별칭
# 별칭 설정alias ll='ls -la'alias gs='git status'
# 현재 별칭 보기alias
# 별칭 제거unalias llclear - 화면 정리
cleardate - 날짜/시간
datedate "+%Y-%m-%d %H:%M:%S"cal - 달력
calenv/export - 환경변수 확인/설정
# 전체 환경변수 확인env
# 변수 설정export NODE_ENV=productiontar/zip 관련 외 명령어
# 파일 무결성 확인sha256sum file.txtmd5sum file.txt패키지 관리 (배포판별)
# Debian/Ubuntusudo apt updatesudo apt install nginx
# RHEL/CentOS/Fedorasudo dnf install nginx8. 입출력 리다이렉션/파이프
리다이렉션
# 표준 출력 덮어쓰기/추가echo "hello" > out.txtecho "world" >> out.txt
# 표준 에러만 저장command 2> error.log파이프
# 파이프로 연결ps aux | grep node
# 체이닝cat access.log | grep 500 | wc -l글로빙
# 확장자 전체 선택rm *.tmp
# 특정 패턴ls file?.txt자주 하는 실수
✕ 공백 없이 붙여 쓰기: rm-rf folder (틀림)
✓ 명령어와 옵션 사이 공백: rm -rf folder (맞음)
✕ 경로에 공백 처리 안 함: cd my folder (틀림)
✓ 따옴표로 감싸기: cd "my folder" (맞음)
실전 워크플로우 예제
# 1. 프로젝트 디렉토리로 이동cd ~/projects
# 2. 새 폴더 만들기mkdir my-app && cd my-app
# 3. 파일 생성 후 확인touch README.mdls -l
# 4. 내용 추가echo "# My App" > README.md
# 5. 내용 확인cat README.md
# 6. 백업cp README.md README.backup.md다음 단계
이 글에 나온 명령어만 익혀도 일상 작업의 80%는 해결됩니다.
익숙해지면 셸 스크립트, 프로세스 제어, 권한과 보안 모델 등 실무 자동화와 서버 운영에 필요한 고급 기능을 배워보면 좋을 듯 싶습니다.
추천 학습 자료
- Linux Man Pages - 모든 명령어의 상세 매뉴얼
tldr명령어 설치 - 예제 중심의 간단한 도움말
공유
이 글이 도움이 되었다면 다른 사람과 공유해주세요!