Skip to content

soheeGit/smallsh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

smallsh

  1. 프로젝트 소개
  • 운영체제 팀 프로젝트 small을 개선한 간단한 쉘 개발
  • smallsh을 개선한 간단한 셸은 특수문자(토큰) ‘&’와 ‘;’이 프로그램의 인자로 사용될 수 있도록 특수성을 제거하는 기능이 추가되어야 함.
  • 해쉬문자(#)가 처음에 나오면 이후의 내용은 주석(comment)으로 인식하도록 해야함
  • SIGINT와 SIGQUIT 시그널을 받더라도 종료되지 않도록 해야함
  1. 개발 환경
  • 개발 언어 : C언어
  • 개발 툴 : 리눅스 서버 접속기인 Putty의 vi편집기
  1. 역할 분담
  • 박세빈 : SIGINT, SIQUIT 시그널 처리, redirection 기능 구현, 보고서 작성, 발표자료 작성
  • 박현빈 : 특수성 제거, 파이프 기능 구현, 보고서 작성, 발표자료 작성
  • 진소희 : 내장명령, 해쉬 기능, 보고서 작성, 발표자료 작성, 발표
  1. 개발 기간

전체 개발 기간 : 2024-05-01 ~ 2024-06-05 제안서 작성 : 2024-05-01 ~ 2024-05-08 기능 구현 : 2024-05-09 ~ 2024-05-29 보고서 작성 및 발표 준비 : 2024-05-29 ~ 2024-06-05

  1. 작업 관리
  • 구글 드라이브를 통한 공동 문서작업 및 코드 공유
  • 주간회의를 통해 진행상황 공유
  1. 구현된 기능

SIGINT, SIGQUIT - 시스템이 SIGINT(Ctrl+C), SIGQUIT(Ctrl+)의 신호를 받아도 smallsh이 종료되지 않게 함 redirection - ‘<’, ‘>’, ‘>>’ 의 기호를 이용해 명령어의 표준 입출력을 변경하는 기능 제공 특수성 제거 - :(콜론)을 이스케이프 문자로 사용하여 특수문자의 특수성 제거 파이프 기능 - |를 이용하여 데이터가 한 프로세스에서 다른 프로세스로 전달되도록 하여 여러 명령들이 함께 동작하도록 함 내장명령 - cd를 사용하여 현재 디렉토리를 변경해주고, path를 사용하여 환경변수 경로를 변경해주며, exit를 사용하여 현재 프로세스를 종료시켜줌 해쉬 기능 - 해쉬문자(#)가 맨 처음에 나오면 이후 내용은 주석으로 인식시켜해줌

  1. 완성된 소스코드 설명

완성된 smallsh는 간단한 명령어 해석기로 기존 smallsh 소스코드에 위 기능을 추가한 프로그램이다.

실행파일 생성 : /make

내장명령

cd 실행 : cd 예상 결과 : 초반 경로로 이동

cd / 예상 결과 : 홈 디렉토리로 이동

cd .. 예상 결과 : 이전 디렉토리로 이동

cd [경로]/[경로]/… 예상 결과 : 해당 경로 디렉토리로 이동

path

        실행 :  showpath
예상 결과 : 현재 환경변수 경로 출력

path [경로] 예상 결과 : 환경변수 경로에 추가

redirection < 실행 : 명령어 < 파일 예상 결과 : 파일의 내용을 명령어의 표준 입력으로 받아 실행

>

실행 : 명령어 > 파일 예상 결과 : 파일이 존재하지 않으면 파일을 생성해 명령어의 결과값을 파일에 기록 파일이 존재하지 않을씨 덮어씌워 기록

해쉬

# 
실행 : # 내용
예상 결과 : 주석으로 처리된 명령어입니다.

파이프

|
실행 : a명령어 | b명령어
예상 결과 : a명령어의 출력값을 입력값으로 받은 b명령어 실행

특수성 제거

: 
실행 :  echo :;
예상 결과 : ;

SIGINT, SIGQUIT

실행 : (ctrl + c) or (ctrl + \)
예상 결과 : Team5> ^C or ^\
  1. 개선 목표

사용자 인터페이스 개선 - 잘못된 명령어 입력시 사용법을 안내한다. - 이전 명령어를 저장하고, 화살표 키로 탐색할 수 있는 기능을 추가한다. - tab을 눌러 명령어, 파일 이름 등을 자동 완성하는 기능을 추가한다.

더많은 내장 명령어 추가

  1. 프로젝트 후기

박세빈 : 앞으로 개발자를 직업으로 삼으면서 팀원들과 소통하는 일이 더 많을텐데 졸업하기 전에 이런 팀프로젝트 경험을 쌓을 수 있는 기회가 있어서 좋았고, 팀프로젝트를 진행하면서 os에 대해 전보다 깊은 이해를 할 수 있었다.

박현빈 : 제안서 작성부터 Readme 작성까지 지금까지 많이 경험해보지 않았던 작업이라 생각보다 많은 에너지를 썼다. 각자의 코드 스타일이 달라 코드 공유하는 부분에서 작은 어려움이 있었다. 각자 자신이 맡은 바에 집중하는 것도 중요하지만 서로의 진행상황과 서로의 방향성을 공유하는 것 또한 중요함을 느꼈다. 같은 목표를 갖고 프로젝트를 진행하는 소중한 경험이었다.

진소희 : 처음 제공되었던 smallsh 코드를 분석하는 부분에서 시간이 꽤나 많이 소비되어 어느 부분에 계획했던 기능을 넣어야 할지 분석하는 것이 어려웠지만, 팀원들과 내용을 공유하며 해당 프로젝트를 기능적 부분 뿐만이 아니라 프로세스의 동작에 있어서 전체적인 이해를 할 수 있는 좋은 경험이 되었다.

About

small shell 미니 프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published