전체 치트시트

Linux 셸 명령어 치트시트

매일 쓰는 Linux / macOS 셸 명령어 빠른 참조: 파일 작업, 텍스트 처리, 권한, 프로세스, 네트워킹, 아카이브, 스토리지 — 자주 쓰는 옵션과 실전 예시까지 정리했습니다.

명령어 40개

파일 & 탐색

pwd

현재 작업 디렉터리의 절대 경로를 출력합니다.

pwd
ls

디렉터리 내용을 나열합니다.

-l long 형식; -a 숨김 포함; -h 사람이 읽기 쉬운 크기; -t mtime 기준 정렬; -r 역순

ls -lah /var/log
cd <dir>

현재 작업 디렉터리를 변경합니다.

cd ~/-projects/app && pwd
tree <dir>

디렉터리를 트리 형태로 재귀 나열; 개요 파악에 최고(설치 필요할 수 있음).

-L <n> 최대 깊이; -a 숨김 표시; -d 디렉터리만; -I 패턴

tree -L 2 -I 'node_modules|.git' .

파일 작업

mkdir -p <dir>

디렉터리(와 누락된 부모까지)를 한 번에 만듭니다.

-p 부모 생성; -v verbose; -m <mode> 권한 설정

mkdir -p src/components/ui
cp <src> <dest>

파일 또는 디렉터리를 복사합니다.

-r 재귀(디렉터리용); -i 대화형; -v verbose; -p mode/time 보존

cp -rv src/ backup/
mv <src> <dest>

파일 또는 디렉터리를 이동(이름 변경).

-i 대화형; -v verbose; -n 덮어쓰지 않음

mv README.md readme.md && mv ../tmp .
rm <path>

파일 또는 디렉터리를 삭제합니다. ⚠️ 휴지통이 없습니다 — 경로를 다시 확인하세요.

-r 재귀; -f force; -i 대화형; -v verbose

rm -rf build/ node_modules/
ln -s <target> <link>

<link> 위치에 <target> 으로 가리키는 심볼릭 링크를 만듭니다.

-s 심볼릭(기본: 하드); -f 기존 덮어쓰기; -n 기존 링크 추적 안 함

ln -s /opt/app-v2 current
touch <file>

빈 파일을 만들거나 내용 변경 없이 mtime 을 갱신합니다.

touch .gitignore

텍스트 & 보기

cat <file>

파일 전체 내용을 stdout 으로 출력합니다.

-n 줄 번호; -A 비인쇄 문자 표시; -s 빈 줄 압축

cat -n package.json
less <file>

파일에서 페이저를 엽니다(/, n, N 으로 검색; q 로 종료).

-N 줄 번호; -S 줄 바꿈 없음; +F 자동 follow (tail 처럼)

less -NS /var/log/syslog
head -n 10 <file>

파일의 처음 N 줄(기본 10)을 출력합니다.

head -n 30 /etc/passwd
tail -n 50 -f <file>

파일의 마지막 N 줄을 보여주고 파일이 늘어나면 따라갑니다(로그용).

-f follow; -F follow & 재시도; -n 줄 수(기본 10); -c 바이트; --pid=PID PID 종료 시 중단

tail -f -n 50 /var/log/nginx/access.log

검색 & 필터

grep <pattern> <files>

패턴에 매치되는 줄을 검색; 확장/PCRE 정규식 지원.

-i 대소문자 무시; -r 재귀; -n 줄 번호; -v 반전; -E 확장 정규식

grep -rni "TODO" src/
find <path> -name <pattern>

디렉터리 트리를 순회하며 조건에 매치되는 파일을 나열합니다.

-type f|d; -name glob; -iname 대소문자 무시; -size +1M; -mtime -7; -maxdepth

find . -type f -name "*.log" -mtime +7 -delete
awk '<prog>' <file>

패턴-액션 텍스트 스캐너 — 컬럼 자르기, 값 합산 등.

-F fs 필드 구분자; -v var=value; -f 스크립트 파일

awk -F'\t' 'NR>1 {sum+=$3} END {print sum}' data.tsv
sed 's/<a>/<b>/' <file>

스트림 에디터 — 줄 단위 치환, 삭제, 삽입.

-i 제자리 편집; -E 확장 정규식; -e 표현식 결합; s/from/to/[g] [p]

sed -i '' 's/version = "1\.."/version = "1.9"/' pyproject.toml
sort | uniq -c | sort -nr

파이프라인 관용구: 출현 횟수를 세고 빈도 내림차순으로 정렬.

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

권한

chmod <mode> <file>

파일 권한 변경(예: 755, u+x, g-w, o=r).

-R 재귀; --reference=<file> 모드 복사

chmod -R u=rwX,go=r ./docs
chown <user>[:<group>] <file>

파일 소유자와 그룹 변경.

-R 재귀; -h 심볼릭 링크 자체에 적용(-R 과 함께)

chown -R www-data:www-data /var/www/html
umask

새로 만들어지는 파일의 기본 권한 마스크 표시/설정.

-S 기호형; -p 이식성을 위해 umask 보존

umask 022

프로세스 & 시스템

ps aux

모든 프로세스를 상세 정보와 함께 표시(BSD 스타일 컬럼).

-e 모두; -f full; -L 스레드; --sort=-%mem

ps auxf | grep -v grep | grep nginx
top / htop

실시간 인터랙티브 프로세스 뷰어(htop 이 UI 가 더 좋음; 설치 필요할 수 있음).

P/CPU M/MEM 정렬; k kill; r renice; q 종료

htop -u www-data
kill [-9|<sig>] <pid>

프로세스에 시그널을 보냅니다. SIGTERM(15) 은 정중, SIGKILL(9) 은 강제.

-9 SIGKILL; -l 시그널 목록; -s 시그널을 이름으로 지정

kill -TERM 12345 && sleep 2 && kill -9 12345
jobs / bg / fg / nohup

잡 제어 관리 — 목록, 백그라운드, 포어그라운드, 행업 면역으로 실행.

nohup ./long-task.sh > out.log 2>&1 &
systemctl <verb> <unit>

systemd 서비스와 유닛 제어(status, start, stop, enable, logs).

status / start / stop / restart / enable / disable; -u <user>

systemctl status nginx && systemctl reload nginx

네트워크

wget <url>

비대화형 다운로더; 재귀 / 미러에 친화적.

-c continue; -q quiet; --no-check-certificate; -r 재귀

wget -c https://example.com/big-archive.tar.gz
ssh <user>@<host> [cmd]

원격 호스트에 SSH 세션을 열거나 1회성 명령을 실행합니다.

-p <port>; -i <key>; -L / -R / -D 포트 포워딩; -N 원격 명령 없음; -f 백그라운드

ssh -i ~/.ssh/id_ed25519 user@host 'sudo systemctl restart nginx'
scp / rsync

원격 호스트로/로부터 파일 복사. 부분/반복 전송에는 rsync 가 더 빠릅니다.

scp -r / rsync -avz --progress src/ user@host:/dst/

rsync -avz --progress ./build/ deploy@server:/srv/app/
ping / traceroute / ss

도달 가능성, 경로, 리스닝 소켓을 진단합니다.

ping -c N 횟수; ss -tulnp 리슨 정보; ss -s 요약

ss -tulnp | grep -E ':80|:443'

아카이브 & 압축

tar -czf out.tgz <paths>

tar 아카이브 생성/추출, 선택적으로 gzip/bzip2/xz 사용.

-c 생성; -x 추출; -t 목록; -z gzip; -j bzip2; -J xz; -v verbose; -C <dir>

tar -czf - src/ | ssh server 'tar -xzf - -C /srv/app'
zip -r out.zip <paths>

재귀적으로 zip 아카이브를 만듭니다.

-r 재귀; -9 최대 압축; -e 암호화; -j 경로 제거

zip -r9 build-$(date +%Y%m%d).zip dist/
unzip [-d <dir>] file.zip

zip 아카이브를 추출, 대상 디렉터리 옵션 가능.

-d 대상 디렉터리; -o 덮어쓰기; -l 목록; -p stdout 으로; -q quiet

unzip -o build.zip -d ./extracted

디스크 & 스토리지

df -h

마운트된 파일 시스템의 디스크 사용량을 사람이 읽기 쉬운 단위로 표시.

-h human; -T 파일 시스템 타입 출력; -i inodes

df -hT /
du -sh <path>

파일 공간 사용량 추정; -s 는 디렉터리를 요약합니다.

-s 요약; -h human; -a 모두; --max-depth=N; -x 동일 fs 내에서만

du -sh node_modules/ build/ .

셸 빌트인

history / !! / !$

이전 명령을 탐색, 재실행, 재사용합니다.

history N; !<n> N 번째 줄 재실행; !$ 는 직전 명령의 마지막 인자; !! 는 직전 명령 재실행

git add . && git commit -m "$(!!)"
alias / unalias

셸 명령 단축 별칭을 정의하거나 나열합니다(주로 ~/.bashrc / ~/.zshrc).

alias ll='ls -lah' && alias gs='git status'
env / export / unset

자식 프로세스의 환경변수 나열, 설정, 해제.

export DATABASE_URL=postgres://localhost/dev && env | grep DATABASE

도움말

man <cmd> / <cmd> --help

매뉴얼 페이지(man) 또는 명령의 내장 도움말을 봅니다.

man -k keyword 검색; man -t <cmd> PDF 로 출력; --help 짧은 사용법

man -k 'tar archive'

치트시트 버전 1.0.0

bash 5+ / POSIX 2017 대응