공공부하자개발 · 영어 학습 노트
리눅스
리눅스 명령어리눅스 자체를 익히는 명령 중심 학습0/10 완료
  • 01파일·디렉터리 명령
  • 02텍스트 보기·편집 (less·vi)
  • 03사용자·그룹·권한·sudo
  • 04패키지·시스템 정보 (dnf·rpm)
  • 05프로세스·자원 (ps·top·free·df)
  • 06네트워크 명령 (ip·ss·ping·scp)
  • 07압축·아카이브·검색 (tar·gzip·find)
  • 08셸 활용 (히스토리·별칭·단축키)
  • 09sed · awk 한 줄 처리 (치환·필드·집계)
  • 10링크 · 디스크 · 예약 작업 (ln·mount·crontab)
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 리눅스 명령어 › 01 / 10

파일·디렉터리 명령

섹션 7진행 0 / 10
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

2. 핵심 원리

2.1 현재 위치: pwd 와 cd

pwd 는 지금 있는 폴더의 절대 경로를 출력합니다. cd 는 폴더를 옮깁니다.

명령 뜻
cd /opt/myapp 절대 경로로
cd logs 현재 폴더 아래로
cd .. 한 단계 위로
cd 홈으로
cd - 직전 폴더로
cd ~/work 홈 아래로

cd - 는 두 폴더를 오갈 때 씁니다. 프롬프트에 현재 폴더가 보이도록 설정돼 있어도 pwd 로 확인하는 습관이 안전합니다.

2.2 경로 규칙

/ 로 시작하면 절대 경로, 아니면 현재 폴더 기준 상대 경로입니다. 특수 이름 셋을 기억합니다.

표기 뜻
. 현재 폴더
.. 상위 폴더
~ 내 홈 폴더

스크립트나 cron 에서는 절대 경로를 씁니다. 실행 위치가 어디든 같은 파일을 가리키기 때문입니다. realpath 파일 이 상대 경로를 절대 경로로 바꿔 줍니다.

2.3 목록: ls

ls 는 가장 많이 치는 명령입니다. 옵션 다섯 개를 조합합니다.

옵션 뜻
-l 권한·소유자·크기·시각
-a 숨김 파일(.으로 시작) 포함
-h 크기를 K·M·G 로
-t 수정 시각 최신순
-R 하위 폴더까지

ls -la 가 기본형이고 ls -lt | head 가 최근 바뀐 파일을 보는 형태입니다. ls -lh 의 첫 열 -rw-r--r-- 은 03 사용자·권한 레슨에서 읽는 법을 배웁니다.

2.4 만들기: mkdir 와 touch

bash
mkdir docs                  # 폴더 하나
mkdir -p a/b/c              # 중간 폴더까지, 이미 있어도 에러 없음
touch memo.txt              # 빈 파일 만들기
touch memo.txt              # 있으면 수정 시각만 갱신

-p 없이 mkdir a 를 두 번 치면 "File exists" 에러입니다. 스크립트에서는 항상 -p 를 씁니다. touch 는 파일이 있는지 확인하는 용도로도 씁니다.

2.5 복사: cp

bash
cp a.txt b.txt              # 파일 복사
cp a.txt docs/              # 폴더 안으로
cp -r docs docs_backup      # 폴더째 (-r 필수)
cp -p a.txt b.txt           # 권한·시각 유지
cp -i a.txt b.txt           # 덮어쓸 때 물어봄

폴더는 -r 이 없으면 "omitting directory" 로 복사되지 않습니다. -p 는 백업할 때 원본 시각을 남기려고 씁니다. -i 는 실수 방지용으로 별칭에 넣어 두는 사람이 많습니다.

2.6 이동·이름 변경: mv

리눅스에는 "이름 변경" 명령이 따로 없습니다. mv 가 같은 폴더 안에서는 이름 변경, 다른 폴더로는 이동입니다.

bash
mv old.txt new.txt          # 이름 변경
mv new.txt docs/            # 이동
mv docs docs_old            # 폴더 이름 변경

같은 파티션 안 mv 는 데이터를 옮기지 않고 이름표만 바꿔 수 GB 도 즉시 끝납니다. 다른 파티션으로 가면 복사 후 삭제라 시간이 걸립니다.

2.7 삭제: rm 과 rmdir

bash
rm a.txt                    # 파일
rm -r docs                  # 폴더째
rm -f 없는파일               # 없어도 에러 없음
rm -rf build/               # 폴더째, 묻지 않음
rmdir empty_dir             # 빈 폴더만

rm -rf 는 되돌릴 수 없습니다. 변수를 쓸 때는 rm -rf "$DIR"/* 에서 DIR 이 비면 어떻게 되는지를 항상 생각합니다. 운영 묶음 08 의 set -u 가 그 방어입니다.

2.8 내용 보기: cat head tail

bash
cat small.txt               # 전체 출력, 작은 파일만
head -n 20 app.log          # 앞 20줄
tail -n 20 app.log          # 뒤 20줄
tail -f app.log             # 계속 따라가기, Ctrl+C 로 끝

수백 MB 로그를 cat 하면 터미널이 멈춥니다. head·tail 로 일부만 보고, 전체를 넘겨 보려면 02 텍스트 레슨의 less 를 씁니다.

2.9 세기와 종류: wc 와 file

bash
wc -l app.log               # 줄 수
wc -c app.log               # 바이트
wc -w memo.txt              # 단어 수
file app.jar                # Zip archive
file nums.txt               # ASCII text

file 은 확장자가 아니라 내용을 보고 종류를 맞힙니다. 확장자 없는 파일이나 바이너리인지 텍스트인지 볼 때 씁니다.

2.10 찾기: find

find 시작폴더 조건 이 기본형입니다. 조건을 여러 개 이으면 모두 만족하는 것만 나옵니다.

조건 뜻
-name '*.log' 이름 패턴
-iname 대소문자 무시
-type f / -type d 파일 / 폴더
-empty 빈 것
-newer 파일 그 파일보다 최신
-mtime -1 하루 안에 수정
-size +10M 10MB 초과

패턴은 따옴표로 감쌉니다. 감싸지 않으면 셸이 먼저 *.log 를 현재 폴더 기준으로 펼쳐 엉뚱한 결과가 나옵니다.

2.11 찾은 것에 명령: -exec

bash
find . -name '*.txt' -exec wc -l {} +      # 찾은 파일들에 wc
find . -name '*.tmp' -exec rm {} +         # 지우기
find . -name '*.log' -delete               # 지우기 전용

{} 가 찾은 파일 자리이고 + 는 여러 개를 한 번에 넘깁니다. \; 로 끝내면 파일마다 한 번씩 실행돼 느립니다.

2.12 용량과 정보: du 와 stat

bash
du -sh docs                 # 폴더 합계
du -sh */ | sort -rh        # 하위 폴더별 큰 순서
stat -c '%n %s bytes %A %y' a.txt   # 이름 크기 권한 수정시각
which bash                  # 명령의 실행 파일 위치

du -sh */ 가 "어느 폴더가 큰가" 의 정답입니다. which 는 같은 이름의 명령이 여러 개일 때 어느 것이 실행되는지 알려 줍니다.

핵심 원리
  • 2.1 현재 위치: pwd 와 cd
  • 2.2 경로 규칙
  • 2.3 목록: ls
  • 2.4 만들기: mkdir 와 touch
  • 2.5 복사: cp
  • 2.6 이동·이름 변경: mv
  • 2.7 삭제: rm 과 rmdir
  • 2.8 내용 보기: cat head tail
  • 2.9 세기와 종류: wc 와 file
  • 2.10 찾기: find
  • 2.11 찾은 것에 명령: -exec
  • 2.12 용량과 정보: du 와 stat
이전 섹션1 왜 배우는가2 / 7다음 섹션3 코드 예제