[Minishell] Minishell 과제 요구 사항

bolee·2022년 9월 8일
0

42seoul

목록 보기
25/27
post-custom-banner

42Seoul의 과제 중 하나인 Minishell 과제의 요구 사항을 정리한 포스트이다.

Mandatory Part

항목요구사항
Program nameminishell
Turn in files
MakefileYes
Arguments
External functs.readline, rl_on_new_line, rl_replace_line,
rl_redisplay, add_history, printf, malloc, free,
write, open, read, close, fork, wait, waitpid,
wait3, wait4, signal, kill, exit, getcwd, chdir,
stat, lstat, fstat, unlink, execve, dup, dup2,
pipe, opendir, readdir, closedir, strerror, errno,
isatty, ttyname, ttyslot, ioctl, getenv, tcsetattr,
tcgetattr, tgetent, tgetflag, tgetnum, tgetstr,
tgoto, tputs
Libft authorizedYes
DescriptionWrite a shell

셸(shell)은 다음을 수행해야 한다.:

  • 닫히지 않은 따옴표나 \ 또는;와 같은 지정되지 않은 특수 문자는 해석하지 않는다.
  • 하나 이상의 전역 변수를 사용하지 말고, 그것에 대해 생각하고 왜 그렇게 하는지 설명할 준비를 해라.
  • 새 명령을 기다릴 때 프롬프트를 표시한다.
  • working History를 가져야 한다.
  • 올바른 실행 파일 검색 및 실행(PATH 변수 기반 또는 상대 또는 절대 경로 사용)
  • 내장 기능을 구현해야 합니다.
    • -n 옵션이 있는 echo
    • 상대 또는 절대 경로만 있는 cd
    • 옵션 없는 pwd
    • 옵션 없는 export
    • 옵션 없는 unset
    • 옵션이나 인수가 없는 env
    • 옵션 없는 exit
  • '는 일련의 문자에 대한 모든 해석을 금지한다.
  • "$를 제외한 일련의 문자에 대한 모든 해석을 금지한다.
  • 리다이렉션(redirection):
    • <는 입력을 리디렉션해야 합니다.
    • >는 출력을 리디렉션해야 합니다.
    • <<는 구분 기호만 포함하는 행이 표시될 때까지 현재 소스에서 입력을 읽는다. 기록을 업데이트할 필요가 없다~
    • >>는 추가 모드로 출력을 리디렉션해야 합니다.
  • 파이프 | 파이프라인에 있는 각 명령의 출력은 파이프를 통해
    다음 명령의 입력해야 한다.
  • 환경 변수($ 다음에 문자)는 해당 값으로 확장되어야 한다.
  • $?은 가장 최근에 실행된 포그라운드 파이프라인(foreground pipline)의 종료 상태로 확장되어야 합니다.
  • ctrl-C, ctrl-D, ctrl-\는 bash에서처럼 작동해야 한다.
  • 대화식일 때:
    • ctrl-C은 줄 바꿈에 새 프롬프트를 인쇄합니다.
    • ctrl-D는 쉘을 종료합니다.
    • ctrl-\는 아무 작업도 수행하지 않습니다.

수행하는 것 외에는 필요하지 않다.

모든 요점에 대해 의심이 가는 경우 bash를 참조로 사용해라

Bonus Part

  • 필수 부분이 완벽하지 않다면 보너스는 생각하지도 말아라.
  • 우선 순위에 대한 괄호와 함께 &&, || 구현
  • Wilcard *는 현재 작업 디렉토리에서 작동해야 한다.
post-custom-banner

0개의 댓글