본 레포지토리는 C 언어를 통해서 리눅스 시스템의 구현하기 위한 코드를 제공한다.
- 목표: Mini Operating System 구현
- 전략: C언어를 이용하여 리눅스 환경에서 자주 사용되는 몇 가지 명령어를 구현하여, 가상 OS 환경에서 테스트
git clone https://github.com/wonpark1/osproject.gitdocker login
docker build -t mini-os .
docker run -it mini-os -
mkdir: 새로운 디렉토리를 생성mkdir -p: 상위 디렉토리가 존재하지 않을 경우 자동으로 함께 생성mkdir -m: 생성할 디렉토리의 권한을 지정
-
ls: 현재 디렉토리의 파일 및 디렉토리 목록을 출력ls -l: 현재 파일 목록을 파일크기 및 파일 편집시간과 함께 상세히 출력력ls -a: 현재 파일 목록 숨김파일까지 출력ls -al,ls -la: 'ls -l'과 'ls -a' 기능 동시에 수행행
-
cd: 현재 작업 디렉토리를 변경rm -r: 재귀적 삭제, 디렉토리/파일을 삭제할 때 사용 안의 내용도 같이 삭제rm -f: 삭제권한이 없거나 삭제 불가능해도 오류메시지를 출력하지 않게 삭제rm -v: 삭제되는 파일이나 디렉터리의 이름을 출력해서 사용자에게 처리 상황을 알림rm -rfv: 'rm -r', 'rm -f', 'rm -v' 기능 동시에 수행
-
cat: 파일의 내용을 출력하거나 파일을 연결cat >: 새파일 만들면서 내용 수정cat -n: 만들어진 파일 내용을 행 넘버과 함께 출력
-
pwd: 현재 작업 중인 디렉토리의 전체 경로를 출력 -
chown: 파일이나 디렉토리의 소유자 및 그룹을 변경chown -R: 지정한 디렉토리뿐 아니라 하위의 모든 파일 및 디렉토리에 대해 소유자/그룹을 재귀적으로 변경
-
grep: 파일에서 특정 문자열을 검색grep -n: 파일에 찾는 단어를 일치하는 줄의 번호와 함께 출력grep -i: 대소문자를 구분하지 않고 검색을 수행grep -v: 검색어와 일치하지 않는 줄만 출력grep -o: 검색어와 정확히 일치하는 단어만 출력
-
find: 파일 시스템에서 조건에 맞는 파일이나 디렉토리를 검색find [경로]: 하위 모든 파일 및 디렉토리 출력find [경로] -type d: 하위 디렉토리만 출력find [경로] -type f: 하위 파일만 출력find [경로] -name "이름": 해당 이름과 일치하는 파일/디렉토리 출력find [경로] -name "*.확장자": 특정 확장자 파일 출력 (ex. *.txt)
-
rm: 파일이나 디렉토리를 삭제cd: 루트로 이동cd: 루트로 이동cd: 루트로 이동cd: 루트로 이동
-
cp: 파일이나 디렉토리를 복사 -
alias: 명령어에 별칭을 지정unalias: 별칭 삭제
-
diff: 두 파일의 차이점을 비교하여 출력 -
useradd: 새로운 유저 생성 -
userdel: 유저 삭제 -
userlist: 유저 목록 출력
📁 2025_OS_01_1/
├── include/ # 헤더 파일들이 위치한 폴더
│ ├── command.h # 명령어 함수들의 선언과 관련 구조체 정의
│ ├── osproject.h # 프로젝트 전반에 사용되는 상수와 기본 구조체 정의
│ ├── parser.h # 명령어 파싱 관련 함수 선언
│ ├── stack.h # 경로 추적을 위한 스택 구조체와 함수 선언
│ └── system.h # 시스템 초기화와 관리 함수 선언
└── src/ # 소스 코드 파일들이 위치한 폴더
├── alias.c # alias, unalias 명령어 구현
├── cat.c # cat 명령어 구현 (파일 읽기/쓰기)
├── cd.c # cd 명령어 구현 (디렉토리 이동)
├── chown.c # chown 명령어 구현 (소유자/그룹 변경)
├── command.c # 공통으로 사용되는 명령어 유틸리티 함수 구현
├── cp.c # cp 명령어 구현 (파일 복사)
├── diff.c # diff 명령어 구현 (파일 비교)
├── find.c # find 명령어 구현 (파일/디렉토리 검색)
├── grep.c # grep 명령어 구현 (파일 내용 검색)
├── ls.c # ls 명령어 구현 (디렉토리 내용 출력)
├── main.c # 프로그램의 메인 함수와 초기화 로직
├── mkdir.c # mkdir 명령어 구현 (디렉토리 생성)
├── parser.c # 사용자 입력 명령어 파싱 및 실행
├── pwd.c # pwd 명령어 구현 (현재 작업 경로 출력)
├── rm.c # rm 명령어 구현 (파일/디렉토리 삭제)
├── stack.c # 경로 추적용 스택 구조체 구현
├── system.c # 파일 시스템 초기화와 관리 기능 구현
└── user.c # 사용자 관리 관련 기능 구현