운영체제

[전공 중간고사 정리] 운영체제 – 리눅스 명령어(파일과 디렉터리)

gamjadori 2026. 7. 28. 10:01
728x90

시스템 종료 명령어 (모두 동일한 결과)

• poweroff
• shutdown -P now
• halt -p
• init 0

재부팅 명령어

• reboot
• shutdown -r now
• init 6

로그아웃 명령어

• logout
• exit

핵심: # 프롬프트 → root(관리자) 사용자 / $ 프롬프트 → 일반 사용자

2. 런레벨(Runlevel) — 시스템 동작 단계
• 리눅스는 시스템 동작 상태를 숫자(런레벨)로 구분
• init 명령어 뒤에 붙는 숫자가 런레벨 (예: init 5)

런레벨표

• 0: Power Off, 시스템 종료
• 1: Rescue, 시스템 복구 모드(단일 사용자)
• 2: Multi-User, 사용하지 않음
• 3: Multi-User, 텍스트 화면 다중 사용자
• 4: Multi-User, 사용하지 않음
• 5: Graphical, 그래픽(GUI) 다중 사용자(일반 사용 모드)
• 6: Reboot, 재부팅

쉬운 비유: 윈도우 같은 화면 = 런레벨 5(Graphical) / 터미널만 있는 화면 = 런레벨 3

런레벨 확인 명령어

• runlevel
• who -r
3. 자동완성과 히스토리

Tab 키 — 자동완성

• 파일명 일부만 입력 후 Tab → 나머지 자동 완성 (오타 방지 + 빠른 입력)
• 예: cd /et[Tab]Ne[Tab]dis[Tab]

history — 명령어 기록 조회

• history : 지금까지 입력한 명령 목록
• !! : 바로 직전 명령 다시 실행
• !5 : 5번 명령어 다시 실행
• !cd : cd로 시작하는 마지막 명령 다시 실행
4. 리눅스 파일의 종류

리눅스에서는 모든 것이 파일 취급 (하드디스크, 키보드도 포함)

종류별 예시

• 일반 파일: 텍스트, 실행파일, 이미지 등 (game.txt, photo.jpg)
• 디렉터리: 폴더도 파일 취급 (/home, /etc)
• 링크 파일: 다른 이름의 바로가기, 원본 참조 (윈도우 바로가기와 유사)
• 장치 파일: 하드디스크, 키보드 등 하드웨어 (/dev/sda, /dev/tty)

파일 종류 확인
file 파일명

• 예: file .profile → .profile: ASCII text
• 예: file 다운로드 → 다운로드: directory
5. 디렉터리 계층 구조 ⭐

트리(Tree) 구조

• 리눅스 디렉터리는 나무(트리) 모양 구조
• 모든 것의 출발점은 루트 디렉터리(/)

주요 디렉터리 기능 (시험 출제 포인트)

• /etc : 리눅스 시스템 설정 파일 모음
• /home : 사용자별 개인 홈 디렉터리
• /tmp : 임시 파일 저장(재시작 시 전부 삭제됨!)
• /var : 로그 등 자주 바뀌는 파일
• /dev : 장치(디바이스) 파일
• /boot : 부팅에 필요한 커널 파일
• /proc : 프로세스 정보 등 커널 관련 정보
• /usr : 기본 실행파일, 라이브러리, 헤더 파일
• /bin : 기본 명령어 실행 파일
• /mnt : 파일 시스템을 임시로 마운트하는 곳

중요 기호 정리

• / : 루트 디렉터리 또는 경로 구분자
• . : 현재 디렉터리
• .. : 상위(부모) 디렉터리
• ~ : 현재 사용자의 홈 디렉터리(예: ~user1)
6. 절대경로 vs 상대경로 ⭐⭐

현재 위치가 /home/user1일 때 기준

• / (루트) → 절대: / / 상대: ../..
• home → 절대: /home / 상대: ..
• boot → 절대: /boot / 상대: ../../boot
• usr/lib → 절대: /usr/lib / 상대: ../../usr/lib
• bin/ls → 절대: /bin/ls / 상대: ../../bin/ls

구분

• 절대 경로: 항상 /로 시작, 어디서나 동일한 위치를 가리킴
• 상대 경로: 현재 위치 기준, /로 시작하지 않음, 현재 위치가 바뀌면 경로도 달라짐
7. 파일/디렉터리 이름 규칙
• 사용 가능: 알파벳, 숫자, -(붙임표), _(밑줄), .(마침표)
• 사용 불가: /, *(별표), |(파이프), 공백, @, #, $, %, ^, & 등
• 대소문자 구분함! File.txt와 file.txt는 다른 파일
• 숨김 파일: 이름 앞에 . 을 붙이면 자동 숨김 처리 (예: .profile)
8. 디렉터리 관련 명령어

pwd — 현재 위치 확인
pwd

출력 예: /home/user1

cd — 디렉터리 이동
cd /etc          # 절대경로로 이동
cd 다운로드       # 상대경로로 이동
cd ..            # 상위 폴더로 이동
cd ~             # 내 홈 디렉터리로 이동
cd               # 홈으로 이동(cd만 쳐도 됨)

ls — 목록 보기
ls        # 기본 목록
ls -l     # 상세 정보(권한, 크기, 날짜 등)
ls -a     # 숨김 파일 포함 전체 목록
ls -al    # 숨김 파일 포함 상세 목록
ls -F     # 파일 종류 표시(/=디렉터리, *=실행파일, @=링크)
ls -R     # 하위 디렉터리까지 전부 보기
ls -i     # inode 번호와 함께 표시

ls -l 출력 결과 읽는 법 ⭐⭐
drwxr-xr-x 2 user1 user1 4096 11월 8 23:24 공개

필드별 의미

• 1번째 문자(d): 파일 종류, d=디렉터리 -=일반파일 l=링크 b=블록장치 c=문자장치
• 2~10번째 문자(rwxr-xr-x): 접근 권한 [소유자 rwx][그룹 r-x][기타 r-x]
• 숫자(3번째, 2): 하드 링크의 개수
• 4번째(user1): 파일 소유자
• 5번째(user1): 파일이 속한 그룹
• 6번째(4096): 파일 크기(바이트 단위)
• 7번째(11월 8 23:24): 마지막 수정 날짜/시간
• 8번째(공개): 파일명

mkdir — 디렉터리 만들기
mkdir temp        # temp 폴더 생성
mkdir -p a/b/c     # 중간 폴더 없어도 한번에 생성

rmdir — 디렉터리 삭제
rmdir temp         # 빈 폴더만 삭제 가능
rmdir -p a/b/c      # 비어 있으면 부모 폴더도 삭제

주의: rmdir는 비어 있는 폴더만 삭제됨. 내용이 있으면 rm -r 명령 사용

9. 파일 내용 보기
• cat 파일 : 전체 내용을 한 번에 출력
• cat -n 파일 : 줄 번호를 포함하여 출력
• more 파일 : 한 화면씩 보기, Space=다음화면 Enter=한줄 q=종료
• less 파일 : 앞뒤로 스크롤 가능, more보다 편함, j/k=이동 q=종료
• head 파일 : 처음 10줄 출력
• head -n 5 파일 : 처음 5줄 출력
• tail 파일 : 마지막 10줄 출력
• tail -n 3 파일 : 마지막 3줄 출력
• tail -f 파일 : 실시간으로 계속 출력(로그 모니터링에 유용)
10. 파일 복사, 이동, 삭제

cp — 복사
cp file1 file2         # file1을 file2로 복사
cp f1 f2 f3 dir1        # 여러 파일을 dir1에 복사
cp -r dir1 dir2         # 디렉터리 통째로 복사(-r 필수!)
cp -i file1 file2       # 덮어쓸지 물어봄(안전한 방법)

mv — 이동/이름 변경
mv file1 file2          # file1 이름을 file2로 변경
mv file1 file2 dir1      # 두 파일을 dir1으로 이동
mv -i file1 file2       # 덮어쓸지 물어봄

rm — 삭제
rm file        # 파일 삭제
rm -r dir      # 디렉터리 삭제(하위 내용 포함)
rm -i file     # 삭제 전 확인
rm -rf dir     # 강제로 전부 삭제(복구 불가!)

경고: rm -rf는 매우 위험. 중요한 파일 실수 삭제 시 복구 불가

11. 파일 생성

touch — 빈 파일 생성 / 수정 시간 변경
touch newfile.txt                       # 빈 파일 생성
touch file1.txt file2.txt file3.txt      # 여러 파일 동시 생성
touch -t 202503250830 myfile.txt        # 특정 시간으로 수정 시간 변경

리다이렉션(>) 을 이용한 파일 생성
echo “안녕하세요” > file.txt      # file.txt 생성(덮어쓰기)
echo “추가 내용” >> file.txt      # file.txt에 내용 추가(이어쓰기)
ls > filelist.txt                # ls 결과를 파일로 저장

emptyfile.txt                  # 빈 파일 생성

기호 의미

• : 덮어쓰기, 파일이 있으면 기존 내용을 지우고 새로 씀
• : 이어쓰기, 파일 끝에 내용을 추가함
12. grep — 특정 문자열 검색

grep ‘찾을문자’ 파일명
grep ‘error’ log.txt              # log.txt에서 error 찾기
grep -i ‘error’ log.txt           # 대소문자 무시하고 검색
grep -n ‘main’ program.c          # 줄 번호도 함께 출력
grep -r ‘TODO’ /home/             # 하위 폴더까지 전부 검색
grep -l ‘error’ *.log             # 해당 단어가 있는 파일명만 출력
ls -l | grep ‘txt’                # ls 결과에서 txt 포함 줄만 필터

옵션 정리

• -i : 대소문자 구분 없이 검색
• -n : 줄 번호를 함께 출력
• -l : 패턴이 포함된 파일명만 출력
• -r : 하위 디렉터리까지 재귀 검색
13. find — 파일 찾기

find . -name ‘hello.c’                       # 현재 폴더에서 이름으로 찾기
find / -name ‘파일명’                         # 전체 시스템에서 찾기
find . -name ‘.log’                          # 확장자로 찾기
find /home -type f                            # 파일만 찾기
find /home -type d                            # 디렉터리만 찾기
find /var/log -size +10M                      # 10MB보다 큰 파일
find /home -size -500k                        # 500KB보다 작은 파일
find /var/log -mtime -7                       # 최근 7일 내 수정된 파일
find . -empty                                 # 빈 파일/폴더 찾기
find . -name ’.tmp’ -delete                  # 찾아서 바로 삭제
find . -name ‘*.sh’ -exec chmod +x {} ;      # 찾아서 명령 실행

옵션 정리

• -name : 파일명으로 검색(대소문자 구분)
• -iname : 파일명으로 검색(대소문자 무시)
• -type f : 일반 파일만 검색
• -type d : 디렉터리만 검색
• -size +10M : 10MB 초과 파일 검색
• -mtime -7 : 최근 7일 이내 수정된 파일
• -empty : 빈 파일 또는 빈 디렉터리
• -exec 명령 {} ; : 찾은 파일에 명령 실행

whereis / which — 명령어 위치 찾기
whereis ls    # ls 명령의 실행파일, 매뉴얼, 소스코드 위치 표시
which ls      # 실제 실행되는 ls 명령의 경로만 표시

14. 파일 링크 ⭐⭐⭐

리눅스 파일의 구조
파일 = 파일명 + inode(메타정보) + 데이터 블록

구성요소

• 파일명: 사람이 파일을 식별하는 이름
• inode: 파일에 대한 정보(크기, 권한, 소유자, 수정시간, 데이터 위치)를 담은 구조체, 번호로 표시
• 데이터 블록: 실제 파일의 내용이 저장되는 공간

핵심: 파일 이름이 달라도 inode 번호가 같으면 같은 파일!

하드 링크 vs 심볼릭 링크 비교 (시험 핵심!)

• inode: 하드링크는 원본과 동일한 inode 공유 / 심볼릭링크는 원본과 다른 inode 사용
• 원본 삭제 시: 하드링크는 그대로 사용 가능 / 심볼릭링크는 깨짐(Broken Link)
• 디렉터리: 하드링크는 생성 불가 / 심볼릭링크는 생성 가능
• 다른 파일시스템: 하드링크는 생성 불가 / 심볼릭링크는 생성 가능
• 비유: 하드링크는 진짜 쌍둥이(같은 실체) / 심볼릭링크는 포스트잇 메모(경로 안내)

링크 만들기
ln original.txt hardlink.txt         # 하드 링크 생성
ln -s original.txt symlink.txt        # 심볼릭 링크 생성
ls -li                                # inode 번호와 함께 확인

디렉터리의 하드 링크 개수

• 빈 디렉터리: 2 (.자기자신 + ..부모참조)
• 하위 디렉터리 1개 추가: 3
• 하위 디렉터리 2개 추가: 4
• 계산 공식: 하드 링크 수 = 2 + 하위 디렉터리 개수

시험 대비 핵심 요약

명령어별 기능

• pwd : 현재 디렉터리 위치 확인
• cd [경로] : 디렉터리 이동
• ls -al : 숨김파일 포함 상세 목록
• mkdir -p : 중간 폴더 포함 디렉터리 생성
• rmdir : 빈 디렉터리 삭제
• cat / more / less : 파일 내용 출력
• head / tail : 파일 앞/뒷부분 출력
• cp -r : 디렉터리 복사(-r 필수)
• mv : 파일 이동 또는 이름 변경
• rm -rf : 강제 삭제(주의!)
• touch : 빈 파일 생성 또는 수정 시간 변경
• grep : 파일에서 특정 문자열 검색
• find : 조건에 맞는 파일 찾기
• ln : 하드 링크 생성
• ln -s : 심볼릭(소프트) 링크 생성
• whereis / which : 명령어의 경로 위치 찾기
• file : 파일의 종류 확인
• history : 이전에 입력한 명령어 목록 조회

최우선 암기 포인트
① 절대경로(/로 시작) vs 상대경로 구분
② ls -l 출력 필드 의미
③ 하드링크 vs 심볼릭링크 차이
④ rm -rf 주의(복구 불가)
⑤ 런레벨 번호(0,3,5,6)