리눅스 명령어 총정리

명령어를 외우기 전에 리눅스가 일하는 방식부터 이해하면 71가지 명령어가 훨씬 덜 낯섭니다. 원리, 조합법, 위험한 명령어의 안전수칙까지 함께 정리했습니다.

한눈에 보기

리눅스 명령어는 낱개로 외우는 목록이 아니라 "작은 도구 여러 개를 이어 붙여 쓰는 방식"에 가깝습니다. 파일을 보고, 권한을 정하고, 텍스트를 걸러내고, 프로세스와 네트워크를 살피는 일이 대부분 같은 몇 가지 규칙 위에서 움직입니다. 이 글은 그 규칙(셸, 옵션, 파이프, 권한)을 먼저 설명하고, 아래 카드에서 명령어별 문법과 예시를 확인한 뒤, 조합 예시와 안전수칙, 흔한 실수로 마무리합니다.

명령어는 어디서 와서 어떻게 실행되나

터미널에 입력한 글자를 읽고 해석하는 프로그램이 셸(shell)입니다. 흔히 쓰는 셸로는 bash가 있고, 셸은 입력을 단어로 나눠 첫 단어를 명령어로, 나머지를 옵션과 인자로 취급합니다. 어떤 명령어(cd처럼)는 셸 자체에 들어 있고, 어떤 명령어(ls, grep)는 별도의 프로그램 파일입니다. 그래서 일부 명령은 배포판에 따라 설치되어 있지 않을 수 있고, which 명령어나 type 명령어로 어디서 실행되는지 확인할 수 있습니다. 사용법이 기억나지 않으면 명령어 --help 또는 man 명령어가 가장 정확한 출발점입니다.

여러 작업을 한 줄로 잇는 방법도 세 가지로 요약됩니다. |는 앞 출력을 뒤 입력으로 넘기고, >는 출력을 파일로 저장(덮어쓰기)하며,>>는 파일 끝에 덧붙입니다. 이 세 가지만 알아도 카드 속 명령어들을 조합할 수 있습니다.

파일과 디렉토리

📁

ls

디렉토리 안의 파일과 폴더 목록을 봅니다.

기본 문법과 옵션

  • 기본 형태: `ls [옵션] [경로]`
  • -l: 파일 크기·권한·수정일 등 자세한 정보를 표시합니다.
  • -a: 숨김 파일(.으로 시작하는 파일)까지 모두 표시합니다.
  • -h: 파일 크기를 사람이 읽기 쉬운 단위(KB/MB)로 표시합니다.

ls -al → 숨김 파일까지 포함해 상세 목록을 봅니다.

📂

cd

현재 작업 중인 디렉토리를 이동합니다.

기본 문법과 옵션

  • `cd 경로`로 원하는 디렉토리로 이동합니다.
  • `cd ..`는 상위 디렉토리로, `cd ~`는 홈 디렉토리로 이동합니다.
  • `cd -`는 바로 이전에 있던 디렉토리로 되돌아갑니다.

cd /var/log → /var/log 디렉토리로 이동합니다.

📍

pwd

현재 위치한 디렉토리의 전체 경로를 출력합니다.

기본 문법과 옵션

  • Print Working Directory의 줄임말입니다.
  • 셸 스크립트에서 현재 경로를 변수로 저장할 때도 자주 사용됩니다.

🗂️

mkdir

새 디렉토리(폴더)를 생성합니다.

기본 문법과 옵션

  • `mkdir 폴더이름`으로 폴더를 만듭니다.
  • -p 옵션을 쓰면 중간 경로가 없어도 한 번에 생성됩니다.

mkdir -p project/src/utils → 중첩된 폴더를 한 번에 만듭니다.

🗑️

rmdir

비어 있는 디렉토리를 삭제합니다.

기본 문법과 옵션

  • 내용물이 있는 디렉토리는 삭제할 수 없고, 이때는 `rm -r`을 사용해야 합니다.

✨

touch

빈 파일을 생성하거나, 이미 있는 파일의 수정 시간을 갱신합니다.

기본 문법과 옵션

  • 파일이 없으면 새로 만들고, 있으면 마지막 수정 시각만 현재 시각으로 바꿉니다.

touch notes.txt → 빈 텍스트 파일을 만듭니다.

📋

cp

파일이나 디렉토리를 복사합니다.

기본 문법과 옵션

  • `cp 원본 대상` 형태로 사용합니다.
  • -r 옵션을 붙여야 디렉토리(폴더) 전체를 복사할 수 있습니다.
  • -i 옵션은 같은 이름의 파일을 덮어쓰기 전에 확인을 물어봅니다.

cp -r src backup → src 폴더 전체를 backup으로 복사합니다.

➡️

mv

파일이나 디렉토리를 이동하거나 이름을 바꿉니다.

기본 문법과 옵션

  • 같은 위치에서 이름만 바꾸면 파일명 변경으로 동작하고, 다른 경로를 지정하면 이동으로 동작합니다.

mv old.txt new.txt → 파일 이름을 바꿉니다.

❌

rm

파일이나 디렉토리를 삭제합니다.

기본 문법과 옵션

  • 기본적으로 파일만 삭제할 수 있으며, 디렉토리를 지우려면 -r(재귀) 옵션이 필요합니다.
  • -f 옵션은 확인 없이 강제로 삭제하므로 신중하게 사용해야 합니다.
  • 휴지통 개념이 없어, 한번 삭제하면 복구가 매우 어렵습니다.

rm -rf old_folder → 폴더와 그 안의 모든 내용을 강제로 삭제합니다(신중하게 사용하세요).

📄

cat

파일 내용을 화면에 그대로 출력합니다.

기본 문법과 옵션

  • 여러 파일을 한 번에 이어 붙여 출력할 수도 있습니다(`cat a.txt b.txt`).
  • 짧은 파일 내용을 빠르게 확인할 때 자주 사용됩니다.

🔎

find

조건에 맞는 파일이나 디렉토리를 찾습니다.

기본 문법과 옵션

  • `find 경로 -name "패턴"`으로 이름으로 검색합니다.
  • -type f(파일) / -type d(디렉토리)로 종류를 지정할 수 있습니다.
  • -mtime 옵션으로 수정 시간 기준 검색도 가능합니다.

find . -name "*.log" → 현재 폴더 아래에서 확장자가 .log인 파일을 모두 찾습니다.

🌳

tree

디렉토리 구조를 트리 형태로 한눈에 보여줍니다.

기본 문법과 옵션

  • 일부 배포판에는 기본 설치되어 있지 않아 별도 설치가 필요할 수 있습니다(예: `apt install tree`).
  • -L 숫자 옵션으로 표시할 폴더 깊이를 제한할 수 있습니다.

권한과 사용자

🔐

chmod

파일이나 디렉토리의 접근 권한(읽기/쓰기/실행)을 변경합니다.

기본 문법과 옵션

  • 권한은 소유자·그룹·기타 사용자 순으로 각각 읽기(4)·쓰기(2)·실행(1) 숫자를 더해 표현합니다.
  • 예를 들어 755는 소유자는 모두 가능, 그룹과 기타 사용자는 읽기·실행만 가능하다는 뜻입니다.
  • `chmod +x script.sh`처럼 기호(+ / -)로도 지정할 수 있습니다.

chmod 755 script.sh → 소유자는 읽기/쓰기/실행, 나머지는 읽기/실행 권한을 부여합니다.

👤

chown

파일이나 디렉토리의 소유자(사용자)를 변경합니다.

기본 문법과 옵션

  • `chown 사용자명 파일명` 형태로 사용합니다.
  • `chown 사용자:그룹 파일명`처럼 소유자와 그룹을 한 번에 바꿀 수도 있습니다.

chown user1 file.txt → file.txt의 소유자를 user1로 바꿉니다.

👥

chgrp

파일이나 디렉토리의 소유 그룹을 변경합니다.

기본 문법과 옵션

  • `chgrp 그룹명 파일명` 형태로 사용합니다.

🛡️

sudo

관리자(root) 권한으로 명령어를 실행합니다.

기본 문법과 옵션

  • "Substitute User DO"의 줄임말로 알려져 있습니다.
  • 시스템 설정 변경, 패키지 설치 등 일반 사용자 권한으로는 할 수 없는 작업에 사용합니다.
  • 실행 전 현재 로그인한 계정의 비밀번호를 요구합니다.

🔄

su

다른 사용자(기본은 root)로 전환합니다.

기본 문법과 옵션

  • `su`만 입력하면 root로 전환을 시도하고, `su 사용자명`으로 특정 계정으로 전환합니다.
  • sudo와 달리, 전환하려는 대상 계정의 비밀번호가 필요합니다.

🙋

whoami

현재 로그인한 사용자 이름을 출력합니다.

기본 문법과 옵션

  • 스크립트나 원격 서버 접속 시 지금 어떤 계정으로 작업 중인지 빠르게 확인할 때 사용합니다.

텍스트 처리와 검색

🔍

grep

파일이나 입력에서 특정 문자열(패턴)이 포함된 줄을 찾습니다.

기본 문법과 옵션

  • `grep "패턴" 파일명` 형태로 사용합니다.
  • -i 옵션은 대소문자 구분 없이 검색합니다.
  • -r 옵션은 디렉토리 안의 파일들을 재귀적으로 검색합니다.
  • -n 옵션은 일치한 줄의 번호도 함께 표시합니다.

grep -rn "TODO" ./src → src 폴더 아래 모든 파일에서 TODO가 포함된 줄과 줄 번호를 찾습니다.

✂️

sed

텍스트를 규칙에 따라 치환하거나 편집하는 스트림 편집기입니다.

기본 문법과 옵션

  • 가장 많이 쓰이는 형태는 문자열 치환입니다: `sed 's/old/new/g' 파일`
  • 끝의 g는 한 줄 안의 모든 일치 항목을 바꾸라는 의미입니다.
  • -i 옵션을 붙이면 화면 출력 대신 원본 파일을 직접 수정합니다.

sed -i 's/foo/bar/g' file.txt → file.txt 안의 모든 foo를 bar로 바꿔 저장합니다.

🧮

awk

줄과 열(필드) 단위로 텍스트를 처리하는 프로그래밍 언어 겸 명령어입니다.

기본 문법과 옵션

  • 기본적으로 공백을 기준으로 각 줄을 필드(`$1`, `$2` ...)로 나눠 다룹니다.
  • 로그 파일에서 특정 열만 뽑아내는 데 자주 사용됩니다.

awk '{print $1}' access.log → 각 줄의 첫 번째 필드만 출력합니다.

⬇️

tail

파일의 뒷부분 몇 줄만 출력합니다.

기본 문법과 옵션

  • 기본값은 10줄입니다.
  • 로그 파일을 실시간으로 지켜볼 때 -f(follow) 옵션을 자주 사용합니다.

tail -f /var/log/syslog → 로그 파일에 새로 추가되는 내용을 실시간으로 계속 보여줍니다.

🔀

sort

텍스트를 줄 단위로 정렬합니다.

기본 문법과 옵션

  • 기본은 사전순 정렬입니다.
  • -n 옵션은 숫자 기준으로 정렬합니다.
  • -r 옵션은 정렬 순서를 뒤집습니다(역순).

🧹

uniq

연속으로 이어진 중복 줄을 하나로 합쳐줍니다.

기본 문법과 옵션

  • 정렬되지 않은 데이터에서는 제대로 동작하지 않아, 보통 `sort`와 함께 사용합니다(`sort file | uniq`).
  • -c 옵션은 중복된 횟수도 함께 보여줍니다.

🔢

wc

파일의 줄 수, 단어 수, 글자(바이트) 수를 셉니다.

기본 문법과 옵션

  • -l은 줄 수만, -w는 단어 수만, -c는 바이트 수만 출력합니다.

wc -l file.txt → 파일의 전체 줄 수를 출력합니다.

📜

less

파일 내용을 화면 단위로 나눠서 스크롤하며 볼 수 있는 뷰어입니다.

기본 문법과 옵션

  • cat과 달리 파일 전체를 한 번에 메모리에 올리지 않아, 큰 파일도 빠르고 가볍게 열 수 있습니다.
  • 방향키로 스크롤, `/검색어`로 파일 내 검색, q로 종료합니다.

🆚

diff

두 파일의 내용을 줄 단위로 비교해 차이점을 보여줍니다.

기본 문법과 옵션

  • 어느 줄이 추가·삭제·변경되었는지 표시해줘 코드나 설정 파일을 비교할 때 유용합니다.

diff old.txt new.txt → 두 파일 사이에서 달라진 줄을 보여줍니다.

프로세스와 시스템

⚙️

ps

현재 실행 중인 프로세스 목록을 보여줍니다.

기본 문법과 옵션

  • `ps aux`가 가장 흔히 쓰이는 형태로, 모든 사용자의 모든 프로세스를 자세히 보여줍니다.

ps aux | grep nginx → 실행 중인 프로세스 중 이름에 nginx가 포함된 것만 찾습니다.

📊

top

실행 중인 프로세스를 CPU·메모리 사용량 순으로 실시간으로 보여줍니다.

기본 문법과 옵션

  • 화면이 주기적으로 자동 갱신되며, q를 누르면 종료됩니다.
  • 더 보기 편한 개선판으로 htop이 널리 쓰입니다(별도 설치 필요).

🛑

kill

프로세스에 신호를 보내 종료시킵니다.

기본 문법과 옵션

  • `kill 프로세스ID(PID)` 형태로 사용합니다.
  • 기본 신호로 종료가 안 되면 -9(강제 종료) 옵션을 사용합니다.

kill -9 1234 → PID가 1234인 프로세스를 강제로 종료합니다.

💥

killall

프로세스 이름으로 여러 프로세스를 한 번에 종료시킵니다.

기본 문법과 옵션

  • PID를 몰라도 실행 파일 이름만으로 종료할 수 있어 편리합니다.

killall firefox → 이름이 firefox인 프로세스를 모두 종료합니다.

🧾

jobs

현재 터미널 세션에서 백그라운드로 실행 중이거나 멈춰있는 작업 목록을 보여줍니다.

기본 문법과 옵션

    ⏯️

    bg / fg

    멈춰있던 작업을 백그라운드(bg) 또는 포그라운드(fg)로 이어서 실행합니다.

    기본 문법과 옵션

    • Ctrl+Z로 작업을 잠시 멈춘 뒤, `bg`로 백그라운드에서 계속 실행하거나 `fg`로 다시 화면 앞으로 가져올 수 있습니다.

    🧰

    systemctl

    systemd 기반 리눅스에서 서비스(데몬)를 관리합니다.

    기본 문법과 옵션

    • `systemctl start/stop/restart 서비스명`으로 서비스를 시작·중지·재시작합니다.
    • `systemctl status 서비스명`으로 현재 상태를 확인합니다.
    • `systemctl enable 서비스명`으로 부팅 시 자동 시작을 설정합니다.

    systemctl restart nginx → nginx 서비스를 재시작합니다.

    💽

    df

    디스크(파일시스템)의 전체 용량과 사용량을 보여줍니다.

    기본 문법과 옵션

    • -h 옵션을 붙이면 용량을 사람이 읽기 쉬운 단위(GB 등)로 보여줍니다.

    df -h → 각 디스크 파티션의 사용량을 GB/MB 단위로 보여줍니다.

    📦

    du

    파일이나 디렉토리가 차지하는 용량을 보여줍니다.

    기본 문법과 옵션

    • `du -sh 폴더명`으로 폴더 전체의 총 용량을 한눈에 확인할 수 있습니다.

    🧠

    free

    시스템의 메모리(RAM) 사용량을 보여줍니다.

    기본 문법과 옵션

    • -h 옵션으로 사람이 읽기 쉬운 단위로 표시할 수 있습니다.

    네트워크

    📶

    ping

    특정 주소로 신호를 보내 네트워크 연결 상태와 응답 속도를 확인합니다.

    기본 문법과 옵션

    • Ctrl+C를 누를 때까지 계속 응답 시간을 보여줍니다.

    ping google.com → google.com까지의 응답 시간을 계속 확인합니다.

    🌐

    curl

    URL로 데이터를 요청하고 응답을 받아오는 명령어로, API 테스트 등에 자주 쓰입니다.

    기본 문법과 옵션

    • 기본으로는 응답 내용을 화면에 출력합니다.
    • -O 옵션으로 응답을 파일로 저장하고, -I 옵션으로 헤더만 확인할 수 있습니다.

    curl -I https://example.com → 해당 사이트의 응답 헤더만 확인합니다.

    ⬇️

    wget

    URL이 가리키는 파일을 다운로드합니다.

    기본 문법과 옵션

    • curl보다 파일 다운로드에 특화되어 있습니다.
    • 다운로드가 중간에 끊겨도 -c 옵션으로 이어받을 수 있습니다.

    🔑

    ssh

    원격 서버에 안전하게 접속(원격 로그인)합니다.

    기본 문법과 옵션

    • 통신 내용이 암호화되어 안전하게 원격 서버를 제어할 수 있습니다.

    ssh [email protected] → 해당 IP의 서버에 user 계정으로 접속합니다.

    📤

    scp

    SSH를 이용해 로컬과 원격 서버 사이에 파일을 안전하게 복사합니다.

    기본 문법과 옵션

    • `scp 원본 대상` 형태이며, 서버 쪽 경로는 `user@호스트:경로`로 표기합니다.

    scp file.txt user@server:/home/user/ → 로컬 파일을 원격 서버로 전송합니다.

    🧭

    ip / ifconfig

    네트워크 인터페이스의 IP 주소 등 설정 정보를 확인합니다.

    기본 문법과 옵션

    • `ip addr`가 최신 배포판의 표준 명령어이고, `ifconfig`는 예전 배포판에서 쓰이던 방식입니다(일부 배포판은 별도 설치가 필요합니다).

    🔌

    netstat / ss

    현재 열려 있는 네트워크 연결과 포트 상태를 확인합니다.

    기본 문법과 옵션

    • `ss`가 netstat을 대체하는 최신 명령어로, 더 빠르게 동작합니다.

    🛰️

    traceroute

    목적지까지 패킷이 거쳐 가는 네트워크 경로(경유지)를 보여줍니다.

    기본 문법과 옵션

    • 어느 구간에서 네트워크 지연이나 문제가 발생하는지 확인할 때 사용합니다.

    압축과 기타

    📦

    tar

    여러 파일을 하나의 아카이브 파일로 묶거나 다시 풀어냅니다.

    기본 문법과 옵션

    • 압축과 묶기를 함께 하는 경우가 많아 옵션 조합을 기억해두면 편합니다.
    • c=생성, x=추출, z=gzip 압축, v=진행 상황 표시, f=파일명 지정.
    • 예: -czvf(압축해서 묶기), -xzvf(압축을 풀며 해제).

    tar -czvf backup.tar.gz ./project → project 폴더를 gzip으로 압축해 backup.tar.gz로 만듭니다.

    🗜️

    gzip / gunzip

    파일을 .gz 형식으로 압축하거나(gzip) 해제합니다(gunzip).

    기본 문법과 옵션

    • 하나의 파일만 압축할 수 있어, 여러 파일을 묶을 때는 tar와 함께 사용하는 경우가 많습니다.

    🎁

    zip / unzip

    파일이나 폴더를 .zip 형식으로 압축하거나 해제합니다.

    기본 문법과 옵션

    • 윈도우 등 다른 운영체제와도 호환성이 좋은 압축 형식입니다.

    unzip archive.zip → archive.zip의 내용을 현재 폴더에 풀어냅니다.

    🕘

    history

    이전에 입력했던 명령어 목록을 보여줍니다.

    기본 문법과 옵션

    • `!번호`를 입력하면 history에 나온 해당 번호의 명령어를 다시 실행할 수 있습니다.

    🏷️

    alias

    자주 쓰는 긴 명령어를 짧은 별칭으로 등록합니다.

    기본 문법과 옵션

    • 셸 설정 파일(예: ~/.bashrc)에 등록해두면 터미널을 새로 열 때마다 자동으로 적용됩니다.

    alias ll="ls -al" → ll만 입력해도 ls -al이 실행되도록 등록합니다.

    📚

    man

    명령어의 공식 사용 설명서(매뉴얼)를 봅니다.

    기본 문법과 옵션

    • 방향키로 스크롤, `/검색어`로 설명서 안에서 검색, q로 종료합니다.

    man ls → ls 명령어의 전체 옵션과 사용법을 확인합니다.

    💬

    echo

    문자열이나 변수 값을 화면에 출력합니다.

    기본 문법과 옵션

    • 셸 스크립트에서 값을 확인하거나, 파일에 내용을 추가할 때도 자주 사용됩니다.

    echo "text" >> file.txt → file.txt 맨 끝에 text라는 줄을 추가합니다.

    📌

    which

    특정 명령어가 실제로 실행되는 프로그램 파일의 경로를 찾아줍니다.

    기본 문법과 옵션

    • 같은 이름의 명령어가 여러 개 설치되어 있을 때, 실제로 어떤 파일이 실행되는지 확인할 때 유용합니다.

    which python3 → python3 명령어가 실행되는 실제 파일 경로를 보여줍니다.

    vi/vim 편집기

    📝

    vi 기본 모드

    vi(vim)에는 명령 모드·삽입 모드·명령줄 모드 세 가지가 있고, 모든 조작은 이 모드를 오가며 이루어집니다.

    기본 문법과 옵션

    • 파일을 열면 처음에는 명령 모드로 시작합니다(글자를 바로 입력할 수 없습니다).
    • i, a 등을 누르면 삽입 모드로 전환되어 글자를 입력할 수 있습니다.
    • 삽입 모드에서 Esc를 누르면 다시 명령 모드로 돌아갑니다.
    • 명령 모드에서 콜론(:)을 누르면 명령줄 모드로 전환되어 저장·종료 등의 명령을 입력합니다.

    vi file.txt → file.txt를 열어 vi를 실행합니다.

    ✍️

    i / a / I / A

    삽입 모드로 전환해 글자를 입력하기 시작합니다.

    기본 문법과 옵션

    • i: 커서 위치 "앞"에서부터 삽입을 시작합니다.
    • a: 커서 위치 "뒤"에서부터 삽입을 시작합니다.
    • I: 줄의 맨 앞에서, A: 줄의 맨 끝에서 삽입을 시작합니다.

    🔙

    Esc

    삽입 모드 등 다른 모드에서 명령 모드로 돌아갑니다.

    기본 문법과 옵션

    • vi의 거의 모든 조작은 명령 모드에서 이루어지므로, 작업을 마쳤다면 습관적으로 Esc부터 눌러 명령 모드로 돌아온 뒤 다음 동작을 진행합니다.

    🧭

    h / j / k / l

    커서를 한 칸씩 이동합니다(왼쪽/아래/위/오른쪽).

    기본 문법과 옵션

    • h: 왼쪽, j: 아래, k: 위, l: 오른쪽으로 이동합니다.
    • 방향키 대신 손을 홈 로우에서 떼지 않고 빠르게 이동하기 위해 만들어진 방식입니다.

    🏃

    w / b / e, 0 / $

    단어나 줄 단위로 커서를 이동합니다.

    기본 문법과 옵션

    • w: 다음 단어의 시작으로, b: 이전 단어의 시작으로 이동합니다.
    • e: 현재(또는 다음) 단어의 끝으로 이동합니다.
    • 0: 줄의 맨 앞으로, $: 줄의 맨 끝으로 이동합니다.

    📄

    gg / G / :숫자

    문서 전체 범위에서 원하는 위치로 한 번에 이동합니다.

    기본 문법과 옵션

    • gg: 문서의 맨 처음 줄로 이동합니다.
    • G: 문서의 맨 마지막 줄로 이동합니다.
    • `:숫자`를 입력하고 Enter를 누르면 해당 줄 번호로 바로 이동합니다.

    :42 → 42번째 줄로 이동합니다.

    ✂️

    dd

    현재 줄을 삭제(잘라내기)합니다.

    기본 문법과 옵션

    • 삭제된 줄은 임시 저장소(레지스터)에 복사되어 p로 붙여넣을 수 있습니다.
    • 숫자와 함께 쓰면(`3dd`) 여러 줄을 한 번에 삭제합니다.

    📋

    yy

    현재 줄을 복사합니다(yank).

    기본 문법과 옵션

    • dd와 달리 삭제 없이 복사만 합니다.
    • `3yy`처럼 숫자를 붙이면 여러 줄을 한 번에 복사합니다.

    📥

    p / P

    복사하거나 삭제한 내용을 붙여넣습니다.

    기본 문법과 옵션

    • p: 커서 "다음" 줄/위치에 붙여넣습니다.
    • P: 커서 "이전" 줄/위치에 붙여넣습니다.

    ↩️

    u / Ctrl+r

    작업을 취소하거나 다시 실행합니다.

    기본 문법과 옵션

    • u: 바로 전 작업을 취소(undo)합니다.
    • Ctrl+r: 취소했던 작업을 다시 실행(redo)합니다.

    🔡

    x

    커서가 있는 글자 하나를 삭제합니다.

    기본 문법과 옵션

    • 짧은 오타를 바로 수정할 때 유용합니다.
    • `3x`처럼 숫자를 붙이면 여러 글자를 한 번에 지웁니다.

    🖍️

    v / V

    범위를 선택하는 비주얼 모드로 전환합니다.

    기본 문법과 옵션

    • v: 글자 단위로 범위를 선택합니다.
    • V: 줄 단위로 범위를 선택합니다.
    • 범위를 선택한 뒤 d(삭제), y(복사) 등을 누르면 선택한 영역 전체에 적용됩니다.

    🔁

    :%s/old/new/g

    문서 전체 또는 특정 범위에서 문자열을 찾아 바꿉니다.

    기본 문법과 옵션

    • %를 빼면 현재 줄에만 적용되고, g를 빼면 각 줄에서 첫 번째 항목만 바뀝니다.
    • 끝에 c를 붙이면(`:%s/old/new/gc`) 바꾸기 전에 하나씩 확인합니다.

    :%s/foo/bar/g → 문서 전체에서 foo를 bar로 모두 바꿉니다.

    💾

    :w / :q / :wq / :q!

    작업 내용을 저장하거나 편집기를 종료합니다.

    기본 문법과 옵션

    • :w — 현재 내용을 저장합니다.
    • :q — 편집기를 종료합니다(변경사항이 없을 때).
    • :wq (또는 ZZ) — 저장하고 종료합니다.
    • :q! — 변경사항을 저장하지 않고 강제로 종료합니다.

    :wq → 저장하고 vi를 종료합니다.

    🔢

    :set number

    각 줄 앞에 줄 번호를 표시합니다.

    기본 문법과 옵션

    • `:set number`(또는 `:set nu`)로 켜고, `:set nonumber`로 다시 끌 수 있습니다.

    🔂

    .

    마침표(.) 키로 바로 직전에 했던 편집 동작을 그대로 한 번 더 반복합니다.

    기본 문법과 옵션

    • 같은 수정을 문서 여러 곳에 반복해서 적용해야 할 때 특히 유용합니다.

    이 페이지는 무엇을 다루나요?

    터미널을 쓰다 보면 자주 마주치지만 옵션까지는 잘 기억나지 않는 리눅스 명령어들을 파일과 디렉토리(ls·cd·cp 등 기본 조작) → 권한과 사용자(chmod·sudo 등 접근 제어) →텍스트 처리와 검색(grep·sed·awk 등) → 프로세스와 시스템(ps·top·systemctl 등) →네트워크(ping·curl·ssh 등) → 압축과 기타(tar·history·alias 등) → vi/vim 편집기(모드 전환, 커서 이동, 저장·종료 단축키 등) 순서로 정리했습니다. 위 카테고리 탭을 누르거나 검색창에 명령어를 입력해 원하는 것부터 확인해보세요.

    명령어는 왜 배포판마다 조금씩 다르게 느껴지나요?

    이 페이지의 명령어는 우분투(Ubuntu), 데비안(Debian) 계열을 포함한 대부분의 리눅스 배포판과 macOS 터미널에서도 대체로 동일하게 동작합니다. 다만 tree처럼 기본 설치되어 있지 않아 별도 설치가 필요한 명령어도 있고, ifconfig처럼 최신 배포판에서는 ip 같은 새 명령어로 대체되는 경우도 있습니다. 명령어가 동작하지 않으면 배포판의 패키지 관리자(apt, dnf 등)로 설치가 필요한지부터 확인해보세요.

    권한 숫자는 어떻게 읽나: chmod 표

    권한은 읽기 4, 쓰기 2, 실행 1의 합으로 한 자리 숫자가 되고, 소유자·그룹·그 외 사용자 순서로 세 자리를 씁니다. 예를 들어 7은 4+2+1(읽기·쓰기·실행), 5는 4+1(읽기·실행)입니다.

    숫자문자 표기의미흔한 용도
    755rwxr-xr-x소유자는 모두 가능, 나머지는 읽기·실행실행 파일, 디렉토리
    644rw-r--r--소유자는 읽기·쓰기, 나머지는 읽기일반 문서·설정 파일
    600rw-------소유자만 읽기·쓰기비밀 키 등 민감한 파일
    777rwxrwxrwx누구나 읽기·쓰기·실행보안상 피해야 하는 설정

    권한 문제를 만나면 "에러가 나니까 777로 연다"는 방법은 임시방편일 뿐 보안 위험을 키웁니다. 필요한 사용자에게 필요한 권한만 주는 것이 원칙입니다.

    옛 명령어와 새 명령어 비교

    일부 오래된 명령어는 최신 배포판에서 다른 명령어로 대체되는 추세입니다. 다음은 대표적인 대응 관계이며, 동작과 옵션은 완전히 같지 않을 수 있습니다.

    하려는 일오래된 방식최근 방식
    IP·인터페이스 확인ifconfigip addr
    열린 소켓·포트 확인netstatss
    파일 내용 일부만 보기cat 후 눈으로 찾기less, grep, head, tail

    설치된 배포판에 어떤 쪽이 있는지는 다를 수 있으므로, 명령이 없다고 나오면 man 페이지나 패키지 관리자에서 대체 명령어를 확인하세요.

    조합해서 써 보기: 가상 예시 두 가지

    아래는 이해를 돕기 위한 가상 예시이며 실제 사건이 아닙니다. 파일 이름과 경로도 임의로 정한 것입니다.

    가상 예시 1. 로그에서 자주 나오는 오류 찾기

    웹 서버를 운영하는 가상의 개발자가 app.log에서 오류 메시지를 많이 나온 순으로 보고 싶다고 합시다. 이럴 때는 grep "ERROR" app.log | sort | uniq -c | sort -nr | head처럼 명령을 이어 붙입니다. grep이 오류 줄만 고르고, sort가 같은 줄을 모으고, uniq -c가 개수를 세며, 다시 sort -nr이 많은 순으로 정렬하고, head가 위쪽 10줄만 보여 줍니다. 여기서 배울 점은 각 명령어가 단순해도 파이프로 이으면 한 줄짜리 분석 도구가 된다는 것입니다. uniq는 인접한 중복만 세므로 앞에 sort가 있어야 정확하다는 점도 같이 기억하세요.

    가상 예시 2. 스크립트가 "Permission denied"로 실행되지 않을 때

    가상의 사용자가 내려받은 run.sh를 ./run.sh로 실행했더니 "Permission denied"가 나왔습니다. ls -l run.sh로 보면 실행(x) 권한이 없는 경우가 많습니다. 이때 chmod u+x run.sh로 소유자에게만 실행 권한을 추가하면 해결됩니다. 모든 사용자에게 777을 주는 것보다 필요한 범위만 여는 편이 안전합니다. 단, 출처를 알 수 없는 스크립트는 실행 전에 less run.sh로 내용을 먼저 읽어 보는 습관이 필요합니다.

    위험한 명령어 안전수칙

    흔한 오해와 정정

    한계와 더 알아볼 점

    이 페이지는 명령어의 기본 사용법에 초점을 맞춘 입문 자료라서 셸 스크립트 작성, 정규표현식, systemd 서비스 설계, 컨테이너 환경 같은 주제는 깊게 다루지 않습니다. 옵션은 버전과 구현(GNU, BSD 등)에 따라 다를 수 있어 macOS의 터미널과 리눅스에서 같은 옵션이 다르게 동작하는 경우가 있습니다. 또한 이 페이지의 설명은 일반적 동작을 기준으로 하므로, 실제 환경에서는 해당 시스템의 man 페이지를 최종 기준으로 삼으세요. 이어서 SSH 프로토콜 기초, 포트 번호 정리, 핑과 지연 시간,GitHub 기초를 함께 읽으면 서버와 네트워크 작업 이해에 도움이 됩니다.

    유의사항

    이 페이지는 자주 쓰이는 리눅스 명령어의 기본 사용법을 소개하는 교육용 콘텐츠입니다. 특히rm -rf처럼 파일을 삭제하거나 시스템을 변경하는 명령어는 잘못 사용하면 복구가 어려운 피해로 이어질 수 있으니, 실제 시스템에서 실행하기 전에 명령어와 경로를 한 번 더 확인하시길 권장합니다. 더 자세한 옵션은 각 명령어 항목의 man 페이지를 함께 참고하세요.

    자주 묻는 질문

    윈도우 명령 프롬프트(cmd)에서도 이 명령어들이 그대로 되나요?

    아니요. 윈도우 cmd나 PowerShell은 문법이 다릅니다. 다만 윈도우 10 이상에서 WSL(Windows Subsystem for Linux)을 설치하면, 실제 리눅스 환경에서 이 페이지의 명령어를 그대로 사용할 수 있습니다.

    sudo는 왜 계속 비밀번호를 물어보나요?

    보안을 위해 sudo는 일정 시간이 지나면 인증이 만료되어 다시 비밀번호를 물어봅니다. 유지 시간은 시스템 설정에 따라 다릅니다. 관리자 권한이 필요한 명령어를 매번 확인 없이 실행하면 실수로 시스템에 큰 변경을 가할 위험이 있기 때문입니다.

    이 페이지에 없는 명령어는 어디서 찾아볼 수 있나요?

    궁금한 명령어를 문의 페이지로 알려주시면 확인 후 추가하겠습니다. 당장은 터미널에서 man 명령어이름을 입력하면 해당 명령어의 공식 설명서를 바로 확인할 수 있습니다.

    vi와 vim은 같은 건가요?

    vim(Vi IMproved)은 원조 vi 편집기를 기반으로 문법 강조, 실행 취소 단계 확장, 플러그인 등 여러 기능을 더한 개선판입니다. 대부분의 최신 리눅스 배포판에서는 vi라는 이름으로 실행해도 실제로는 vim이 열리도록 연결되어 있어, 이 페이지의 단축키는 두 경우 모두 그대로 사용할 수 있습니다.

    명령어 옵션을 붙여 쓰는 것(-la)과 따로 쓰는 것(-l -a)은 같은가요?

    대부분의 명령에서 짧은 옵션은 묶어서 쓸 수 있어 ls -la와 ls -l -a는 같은 결과를 냅니다. 다만 값을 받는 옵션은 묶는 순서가 중요할 수 있으니 --help로 확인하세요.

    명령어를 실행했는데 아무 메시지도 안 나오면 실패한 건가요?

    유닉스 계열 명령어는 성공하면 조용히 끝나는 경우가 많습니다. 직접 echo $?로 직전 명령의 종료 코드를 볼 수 있고, 0이면 정상 종료를 뜻합니다.

    파이프(|)와 리다이렉션(>)은 무엇이 다른가요?

    파이프는 한 명령의 출력을 다른 명령의 입력으로 넘기고, 리다이렉션은 출력을 파일로 보내거나 파일을 입력으로 씁니다. 앞은 명령과 명령을, 뒤는 명령과 파일을 잇는다고 기억하면 쉽습니다.

    실수로 rm으로 파일을 지웠다면 복구할 수 있나요?

    일반적으로 rm은 휴지통을 거치지 않아 쉽게 되돌릴 수 없습니다. 이후 쓰기를 멈추고 백업을 확인하는 것이 우선이며, 복구 도구의 성공 여부는 파일시스템과 상황에 따라 크게 다릅니다. 중요한 데이터는 평소에 백업해 두세요.