Linux 셸 명령어 치트시트
매일 쓰는 Linux / macOS 셸 명령어 빠른 참조: 파일 작업, 텍스트 처리, 권한, 프로세스, 네트워킹, 아카이브, 스토리지 — 자주 쓰는 옵션과 실전 예시까지 정리했습니다.
명령어 40개
파일 & 탐색
pwd현재 작업 디렉터리의 절대 경로를 출력합니다.
pwdls디렉터리 내용을 나열합니다.
-l long 형식; -a 숨김 포함; -h 사람이 읽기 쉬운 크기; -t mtime 기준 정렬; -r 역순
ls -lah /var/logcd <dir>현재 작업 디렉터리를 변경합니다.
cd ~/-projects/app && pwdtree <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/uicp <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 currenttouch <file>빈 파일을 만들거나 내용 변경 없이 mtime 을 갱신합니다.
touch .gitignore텍스트 & 보기
cat <file>파일 전체 내용을 stdout 으로 출력합니다.
-n 줄 번호; -A 비인쇄 문자 표시; -s 빈 줄 압축
cat -n package.jsonless <file>파일에서 페이저를 엽니다(/, n, N 으로 검색; q 로 종료).
-N 줄 번호; -S 줄 바꿈 없음; +F 자동 follow (tail 처럼)
less -NS /var/log/sysloghead -n 10 <file>파일의 처음 N 줄(기본 10)을 출력합니다.
head -n 30 /etc/passwdtail -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 -deleteawk '<prog>' <file>패턴-액션 텍스트 스캐너 — 컬럼 자르기, 값 합산 등.
-F fs 필드 구분자; -v var=value; -f 스크립트 파일
awk -F'\t' 'NR>1 {sum+=$3} END {print sum}' data.tsvsed 's/<a>/<b>/' <file>스트림 에디터 — 줄 단위 치환, 삭제, 삽입.
-i 제자리 편집; -E 확장 정규식; -e 표현식 결합; s/from/to/[g] [p]
sed -i '' 's/version = "1\.."/version = "1.9"/' pyproject.tomlsort | 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 ./docschown <user>[:<group>] <file>파일 소유자와 그룹 변경.
-R 재귀; -h 심볼릭 링크 자체에 적용(-R 과 함께)
chown -R www-data:www-data /var/www/htmlumask새로 만들어지는 파일의 기본 권한 마스크 표시/설정.
-S 기호형; -p 이식성을 위해 umask 보존
umask 022프로세스 & 시스템
ps aux모든 프로세스를 상세 정보와 함께 표시(BSD 스타일 컬럼).
-e 모두; -f full; -L 스레드; --sort=-%mem
ps auxf | grep -v grep | grep nginxtop / htop실시간 인터랙티브 프로세스 뷰어(htop 이 UI 가 더 좋음; 설치 필요할 수 있음).
P/CPU M/MEM 정렬; k kill; r renice; q 종료
htop -u www-datakill [-9|<sig>] <pid>프로세스에 시그널을 보냅니다. SIGTERM(15) 은 정중, SIGKILL(9) 은 강제.
-9 SIGKILL; -l 시그널 목록; -s 시그널을 이름으로 지정
kill -TERM 12345 && sleep 2 && kill -9 12345jobs / 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.gzssh <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.zipzip 아카이브를 추출, 대상 디렉터리 옵션 가능.
-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 대응