파일과 디렉토리
📁
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 → 각 줄의 첫 번째 필드만 출력합니다.
⬆️
head
파일의 앞부분 몇 줄만 출력합니다.
기본 문법과 옵션
- 기본값은 10줄입니다.
- -n 옵션으로 출력할 줄 수를 지정할 수 있습니다(예: `head -n 20`).
⬇️
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(복사) 등을 누르면 선택한 영역 전체에 적용됩니다.
🔍
/ 패턴, ? 패턴, n / N
문서 안에서 원하는 문자열을 검색합니다.
기본 문법과 옵션
- /패턴 + Enter: 커서 아래쪽 방향으로 검색합니다.
- ?패턴 + Enter: 커서 위쪽 방향으로 검색합니다.
- n: 같은 방향으로 다음 결과, N: 반대 방향으로 이동합니다.
/error → 문서에서 error가 나오는 곳을 찾습니다.
🔁
:%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`로 다시 끌 수 있습니다.
🔂
.
마침표(.) 키로 바로 직전에 했던 편집 동작을 그대로 한 번 더 반복합니다.
기본 문법과 옵션
- 같은 수정을 문서 여러 곳에 반복해서 적용해야 할 때 특히 유용합니다.