
터미널을 처음 쓰기 시작하면 명령어가 너무 많아서 어디서부터 시작해야 하는지 막막한 느낌이 있습니다. 그런데 막상 쓰다 보면 자주 치는 건 정해져 있고, 나머지는 "이런 게 있었지" 하고 찾아 쓰는 수준으로도 충분하더라고요.
이 연재는 그 "자주 쓰는 것들"을 카테고리별로 묶어서 요약본처럼 정리해두는 게 목적입니다. 개념 설명보다는 어떤 상황에서 어떻게 쓰는지 위주로 정리했습니다.
1편에서는 파일 탐색, 파일 관리, 파일 내용 확인을 다룹니다.
파일 & 디렉토리 탐색
pwd
현재 위치한 경로를 출력합니다. 가장 단순한 명령어인데, 스크립트 짜다가 경로가 헷갈릴 때 의외로 자주 씁니다.
$ pwd
/home/user/projects
ls
디렉토리 목록을 보여줍니다. 옵션 없이 쓰면 파일 이름만 나오는데, -alh를 붙이는 게 훨씬 쓸 만합니다.
ls -alh
-a:.으로 시작하는 숨김 파일까지 포함-l: 권한, 소유자, 크기, 수정일 등 상세 정보 출력-h: 파일 크기를 KB, MB 단위로 읽기 편하게 표시
ls -alh를 매번 치기 귀찮으면 ~/.bashrc에 alias로 등록해두는 게 편합니다.
alias ll='ls -alh --color=auto'
cd
디렉토리를 이동합니다. 기본적인 것 외에 알아두면 편한 패턴들이 있습니다.
cd ~ # 홈 디렉토리로 이동
cd - # 바로 이전 경로로 이동
cd .. # 상위 디렉토리로 이동
cd ../.. # 두 단계 위로
cd -는 두 개 디렉토리를 왔다 갔다 할 때 특히 편합니다.
tree
현재 디렉토리 구조를 트리 형태로 보여줍니다. 기본 설치가 안 돼 있을 수도 있습니다(apt install tree).
tree -L 2 # 2단계 깊이까지만 출력
tree -L 2 src/ # 특정 디렉토리 기준으로
프로젝트 구조를 한눈에 파악할 때 씁니다.
du
파일이나 디렉토리의 용량을 확인합니다. -sh를 붙이면 각 항목의 요약 용량을 사람이 읽기 편한 단위로 보여줍니다.
du -sh * # 현재 위치의 항목별 용량
du -sh /var/log # 특정 경로 용량
디스크 공간이 갑자기 부족할 때 뭐가 큰지 찾는 용도로 자주 쓰게 됩니다.
df
전체 디스크 사용량을 마운트 포인트별로 보여줍니다. -h는 여기서도 사람이 읽기 편한 단위로 바꿔주는 옵션입니다.
df -h
du가 특정 파일/디렉토리 단위라면, df는 전체 디스크 현황을 보는 것입니다.
파일 관리
touch
빈 파일을 만들거나, 이미 있는 파일의 타임스탬프를 현재 시각으로 갱신합니다.
touch index.html
touch .env config.yaml # 여러 개 한 번에
mkdir
디렉토리를 만듭니다. -p 옵션을 붙이면 중간 경로가 없어도 한 번에 만들어줍니다.
mkdir -p src/components/ui # a/b/c 경로를 한 번에 생성
-p 없이 중간 경로가 없으면 에러가 납니다. 습관적으로 붙이는 게 낫습니다.
cp
파일을 복사합니다. 디렉토리를 복사할 때는 -r 옵션이 필요합니다.
cp file.txt file_backup.txt # 파일 복사
cp -r src/ src_backup/ # 디렉토리 통째로 복사
mv
파일을 이동하거나 이름을 바꿉니다.
mv old_name.txt new_name.txt # 이름 변경
mv file.txt /tmp/ # 다른 경로로 이동
mv *.log /var/archive/ # 패턴으로 여러 파일 이동
rm
파일이나 디렉토리를 삭제합니다. 되돌릴 수 없으니 주의가 필요합니다.
rm file.txt # 파일 삭제
rm -r directory/ # 디렉토리 삭제
rm -rf node_modules/ # 강제 삭제 (확인 없이)
특히 rm -rf는 경로를 잘못 치면 돌이킬 수 없습니다. 변수를 경로에 쓸 때는 변수가 비어있을 가능성도 생각해야 하고, 최소한 한 번은 echo로 경로를 확인하고 실행하는 버릇을 들이는 게 좋습니다.
ln -s
심볼릭 링크를 만듭니다. 원본 파일은 그대로 두고, 다른 위치에서 참조할 수 있는 포인터를 만드는 것입니다.
ln -s /usr/bin/python3 /usr/local/bin/python
ln -s ~/dotfiles/.bashrc ~/.bashrc
환경 설정 파일 관리하거나, 긴 경로를 짧게 참조할 때 씁니다.
파일 내용 확인
cat
파일 내용을 한 번에 출력합니다. 짧은 파일 빠르게 볼 때 씁니다.
cat .env
cat file1.txt file2.txt # 여러 파일 이어서 출력
파일이 길면 스크롤이 다 올라가버려서 less를 쓰는 게 낫습니다.
less
파일을 페이지 단위로 스크롤하며 봅니다. q로 종료, /로 텍스트 검색, 방향키나 스페이스로 이동합니다.
less /var/log/syslog
less large_file.csv
로그 파일처럼 긴 파일 볼 때는 cat보다 less가 훨씬 편합니다.
head / tail
파일의 앞부분이나 뒷부분만 출력합니다. 기본은 10줄이고, -n으로 줄 수를 지정합니다.
head -n 20 app.log # 앞에서 20줄
tail -n 50 error.log # 뒤에서 50줄
tail -f는 파일 끝을 실시간으로 따라가면서 출력합니다. 서버 로그 모니터링할 때 가장 많이 쓰는 조합입니다.
tail -f server.log
tail -f server.log | grep "ERROR" # 에러 로그만 실시간으로
wc
줄 수, 단어 수, 바이트 수를 세어줍니다.
wc -l access.log # 줄 수만 (라인 카운트)
wc -l *.py # 여러 파일 라인 수 합산
wc -c file.txt # 바이트 수
파이프와 조합해서 결과 개수 확인하는 데 자주 씁니다.
cat access.log | grep "404" | wc -l # 404 에러가 몇 건인지
정리 표
| 명령어 | 주요 옵션 | 용도 |
|---|---|---|
pwd |
— | 현재 경로 확인 |
ls |
-alh |
목록 + 숨김 + 용량 단위 |
cd |
~ - .. |
홈 / 이전 / 상위 이동 |
tree |
-L n |
디렉토리 구조 시각화 |
du |
-sh * |
항목별 용량 확인 |
df |
-h |
전체 디스크 현황 |
touch |
— | 빈 파일 생성 |
mkdir |
-p |
중간 경로 포함 생성 |
cp |
-r |
파일/디렉토리 복사 |
mv |
— | 이동 또는 이름 변경 |
rm |
-rf |
삭제 (주의) |
ln |
-s |
심볼릭 링크 |
cat |
— | 파일 전체 출력 |
less |
— | 페이지 단위 뷰어 |
head |
-n |
앞 N줄 출력 |
tail |
-n -f |
뒤 N줄 / 실시간 출력 |
wc |
-l -c |
줄 수 / 바이트 수 |
2편에서는 권한 & 소유자, 프로세스 관리, 네트워크, 검색 & 파이프를 정리합니다.
아래에 정리한 치트시트 pdf을 첨부하였습니다.
'블로그, 컴퓨터 > Cheatsheets' 카테고리의 다른 글
| Neovim 설정 정리 (2편) — lazy.nvim, LSP, 주요 플러그인 (0) | 2026.05.25 |
|---|---|
| Neovim 설정 정리 (1편) — init.lua 구조와 Lua 기초 (0) | 2026.05.25 |
| Vim 명령어 정리 (2편) — 검색/치환, Visual 모드, 분할 화면, 설정 (0) | 2026.05.24 |
| Vim 명령어 정리 (1편) — 모드, 이동, 편집, 저장 (0) | 2026.05.24 |
| 리눅스 터미널 명령어 정리 (2편) — 권한, 프로세스, 네트워크, 검색 & 파이프 (0) | 2026.05.23 |