1) 학습 요약표
학습내용 | 설명 |
기본 명령어 | pwd, cd, ls -l, mkdir, touch, cp, mv, rm, rmdir, tree |
파일 정보 확인 | stat, file |
사용자 정보 확인 | hostname, whoami, id |
파일 구조 시각화 | tree |
2) 이론 설명
pwd (Print Working Directory)
- 기능 설명: 현재 쉘이 위치한 디렉토리 경로(절대경로)를 출력
- 동작 원리: 현재 사용자의 작업 디렉토리를 반환. 시스템 환경변수 $PWD 값을 참조
- 예제 명령어:
pwd
- 설명:
- 현재 작업 위치가 /home/user/test라면 /home/user/test 출력됨
cd (Change Directory)
- 기능 설명: 디렉토리를 변경함
- 동작 원리: 인자로 주어진 경로로 작업 디렉토리를 이동. cd ~는 홈 디렉토리로 이동
- 예제 명령어:
cd /etc
cd ~
cd ..
cd -
- 설명:
- cd /etc: /etc 디렉토리로 이동
- cd ~: 홈 디렉토리로 이동
- cd ..: 상위 디렉토리로 이동
- cd -: 이전 디렉토리로 이동
ls -l (List)
- 기능 설명: 디렉토리/파일 목록 출력 (-l 옵션: 상세 정보 출력)
- 동작 원리: inode 정보를 포함한 파일 권한, 소유자, 그룹, 크기, 수정 시간 출력
- 예제 명령어:
ls -l
ls -a
ls -lh
ls -lt
- 설명:
- -a: 숨김 파일 포함 목록 출력
- -lh: 사람이 읽기 쉬운 크기로 출력
- -lt: 수정 시간 순으로 정렬
mkdir (Make Directory)
- 기능 설명: 새 디렉토리를 생성함
- 동작 원리: 경로에 지정된 디렉토리를 생성. -p 옵션 시 중간 경로까지 생성
- 예제 명령어:
mkdir test_folder
mkdir -p a/b/c
- 설명:
- 현재 경로에 test_folder라는 디렉토리 생성됨
- -p(parents) 옵션으로 중첩 디렉토리 a/b/c까지 한 번에 생성
touch
- 기능 설명: 새 파일 생성 또는 기존 파일의 수정 시간 갱신
- 동작 원리: 지정한 이름의 빈 파일을 생성하거나, 존재하면 타임스탬프 갱신
- 예제 명령어:
touch test.txt
touch file{1..3}.txt
- 설명:
- test.txt라는 빈 파일 생성됨
- 중괄호 확장을 이용해 file1.txt ~ file3.txt 생성됨
cp (Copy)
- 기능 설명: 파일/디렉토리를 복사함
- 동작 원리: 원본 파일의 내용을 복제하여 새 위치에 저장. -r로 디렉토리 복사 가능
- 예제 명령어:
cp test.txt backup.txt
cp -r folder1 folder2
cp -u source.txt dest.txt
- 설명:
- 일반 파일 복사, 디렉토리 복사 (-r)
- 변경된 파일만 복사 (-u)
mv (Move)
- 기능 설명: 파일 이동 또는 이름 변경
- 동작 원리: 파일의 inode 링크 변경으로 이동/변경을 수행
- 예제 명령어:
mv backup.txt archive.txt
mv *.txt ~/backup/
- 설명: 이름 변경 및 여러 파일을 특정 디렉토리로 이동 가능
rm (Remove)
- 기능 설명: 파일/디렉토리를 삭제함
- 동작 원리: 파일 시스템에서 inode 참조를 제거함. -r로 디렉토리 삭제 가능
- 예제 명령어:
rm archive.txt
rm -r folder_name
rm -i important.txt
- 설명:
- -r: 디렉토리 및 내부 파일 삭제
- -i: 삭제 전 사용자 확인 요청
rmdir (Remove Directory)
- 기능 설명: 비어있는 디렉토리를 삭제함
- 동작 원리: 하위 파일이 없는 디렉토리에 한해 삭제 수행
- 예제 명령어:
rmdir test_folder
- 설명: test_folder가 비어 있으면 삭제됨
stat
- 기능 설명: 파일의 상세 상태 정보 출력 (타임스탬프 포함)
- 동작 원리: inode, size, block, 생성/수정/접근 시간 등을 출력
- 예제 명령어:
stat test.txt
- 설명: test.txt의 inode 정보, 접근/수정/변경 시간 출력
file
- 기능 설명: 파일의 타입을 판별함
- 동작 원리: 마법 숫자(magic number)와 헤더 정보를 기반으로 분석
- 예제 명령어:
file test.txt
- 설명: 일반 텍스트 파일인지, 바이너리인지 출력됨
hostname
- 기능 설명: 현재 시스템의 호스트명 출력
- 동작 원리: /etc/hostname 파일을 참조하여 시스템 이름 출력
- 예제 명령어:
hostname
- 설명: 시스템 식별자 이름이 출력됨
whoami
- 기능 설명: 현재 로그인한 사용자 계정명 출력
- 동작 원리: 현재 쉘의 사용자 정보를 /etc/passwd에서 확인하여 출력
- 예제 명령어:
whoami
- 설명: 예: student 계정으로 로그인 시 student 출력
id
- 기능 설명: UID, GID, 그룹 정보를 포함한 사용자 정보 출력
- 동작 원리: 현재 사용자의 UID, 기본 그룹 및 추가 그룹 정보 출력
- 예제 명령어:
id
- 설명: uid=1000(student) gid=1000(student) groups=1000(student)
tree
- 기능 설명: 디렉토리/파일 구조를 트리 형태로 출력
- 동작 원리: 현재 경로의 하위 구조를 계층적으로 탐색해 출력
- 예제 명령어:
tree
tree -L 2
tree -a
- 설명:
- -L n: n 레벨까지 출력
- -a: 숨김 파일 포함 출력
3) 기본 실습 과제
문제 1. 작업 환경 만들기와 이동
- 현재 디렉토리 경로를 확인하라.
- /tmp/linux_practice라는 디렉토리를 생성하라. (부모 경로가 없을 수도 있음)
- 해당 디렉토리로 이동하고, 현재 위치를 확인하라.
- projects와 notes라는 하위 디렉토리를 각각 만들고, tree 명령으로 구조를 출력하라.
문제 2. 파일 생성과 속성 확인
- projects 디렉토리 안에 task1.txt, task2.txt, task3.txt 빈 파일을 한 번에 생성하라.
- 각 파일의 상세 정보(stat)를 확인하고, 수정 시간(mtime)을 비교하라.
- file 명령으로 각 파일이 어떤 타입으로 인식되는지 확인하라.
- 현재 로그인한 사용자 계정과 UID, GID 정보를 출력하라.
문제 3. 파일 복사와 백업
- task1.txt를 notes 디렉토리로 복사하라.
- notes/task1.txt 파일의 내용을 임의로 편집(예: echo로 내용 추가)하여 수정 시간을 최신으로 만든다.
- cp -u projects/task1.txt notes/task1.txt 명령을 실행했을 때 파일이 복사되는지 확인하라.
- 복사 결과를 stat로 확인하고, 왜 덮어썼는지(혹은 덮어쓰지 않았는지) 이유를 설명하라.
projects/task1.txt 파일은 변경된게 없어 notes/task1.txt 파일에 덮어 쓰기가 안됨.
문제 4. 파일 이동과 삭제
- projects/task3.txt를 notes 디렉토리로 이동하라.
- notes/task3.txt의 이름을 archive.txt로 변경하라.
- archive.txt를 삭제하되, 삭제 전 사용자에게 확인을 받도록 하라.
- projects 디렉토리가 비어 있으면 rmdir로 삭제하고, 비어 있지 않으면 이유를 확인하라.
문제 5. 트리 출력과 정리
- /tmp/linux_practice 경로의 전체 구조를 트리 형태로 출력하라. (숨김 파일 포함)
- 레벨 2까지만 출력하여 projects, notes 구조만 확인하라.
- 남아 있는 파일과 디렉토리를 모두 삭제한 후, tree로 최종 확인하라.
'리눅스 > 기초 학습' 카테고리의 다른 글
Day 5: 파일 검색, 백업 & 자원 확인 (1) | 2025.08.01 |
---|---|
Day 4: 권한 및 소유권 (파일/디렉토리 퍼미션 관리) (2) | 2025.07.30 |
Day 3: 사용자 및 그룹 관리 (2) | 2025.07.24 |
Day 2: 텍스트 출력 & 필터링 (2) | 2025.07.21 |
Day 1.5: 리눅스에서 자주 쓰지만 초보자가 놓치기 쉬운 개념들 (3) | 2025.07.20 |