Minishell 해석

Code 42/Minishell / / 2020. 12. 21. 13:39

Chapter1 - intro

 

shell의 시작은 IT 자체의 시작과 연결되어 있다. 그 시절, 모든 코더들은 1과 0 스위치만으로 컴퓨터와 소통하는 것이 매우 짜증나는 일이라는 것에 동의했다. 이에 따라 어떤 언어를 통해 상호작용할 수 있는 명령줄을 작성하여 컴퓨터와 소통하려고 했던 것은 당연한 것이었다.

 

미니쉘과 함께, 당신은 Windows 가 없던 시절 사람들이 마주한 문제를 경험하게 될 것이다.

 

Chapter2 - 일반 지침 사항

 

  • Norm을 지키시오.

  • segfault, bus error 등의 에러로 예상치 못한 종료가 있어서는 안 된다.

  • 모든 힙 영역 메모리는 free되어야 한다.

  • libft 사용이 가능하다.

  • Makefile 만드시오.

    (등등 우리가 이미 알고 있는 것들.)

 

Chapter3 - 필수 파트

프로그램명 미니쉘
Turn in files (공란)
Makefile Yes
Arguments (공란)
허용 함수 malloc, free, write, open, read,
close, fork, wait, waitpid, wait3,
wait4, kill, exit, getcwd, chdir, stat,
lstat, fstat, execve, dup, dup2, pipe,
opendir, readdir, closed, strerror, errno
Libft 허용 여부 Yes
Description Write a shell

 

당신의 쉘은 반드시:

  • 새로운 명령을 기다릴 때에는 prompt를 보여줘야(show) 한다.
  • 정확히 실행가능한 path를 찾고 실행시켜야 한다. (PATH 변수를 이용하거나 상대 경로 또는 절대 경로를 이용하라. bash에서 처럼)
  • bash에서 처럼 builtin을 implement시켜야 한다:
    (주. 여기서 builtin이란 echo, cat 등 기본적으로 우리가 shell에서 사용하는 것들.)
    • '-n' 옵션을 가지는 echo
    • 상대경로와 절대경로만을 인식하는 cd
    • pwd without any options
    • export without any options
    • unset without any options
    • env without any options and any arguments
    • exit wtihout any options
  • ; 는 bash에서처럼 명령을 구분시켜야 한다. (주. 원래 bash는 ;를 가지고 여러 명령을 붙여서 실행할 수 있다.)
  • ' 그리고 "는 여러 줄의(multiline) 명령인 경우를 제외하고 bash처럼 동작해야 한다.
  • Redirection, 즉 <, >, ">>"는 bash처럼 동작해야 한다. File descriptor aggregation(집합)을 제외하고.
  • Pipes(|)는 bash처럼 작동해야 한다.
  • 환경변수(Environment variables)는 bash처럼 작동해야 한다.(환경변수란 $뒤에 붙는 문자들을 말한다.)
  • $? 는 bash처럼 작동해야 한다.
  • Ctrl -C, ctrl -D 그리고 ctrl -\ 는 bash와 같은 결과를 가져야 한다.

 

Chapter 4 Bonus part

 

  • 필수 파트가 완벽하지 않으면 보너스 점수를 받을 수 없다.
  • 모든 보너스를 할 필요는 없다.
  • Redirection "<<" like in bash
  • Historyline editing with Termcaps. (예시는 man tgetent를 통해 확인할 수 있다.)
    • 커서가 위치한 곳을 편집하도록 하라.
    • 특정 위치에서 커서가 왼쪽 또는 오른쪽으로 이동할 수 있도록 만들어보라. 일반적인 쉘처럼 커서가 있는 위치에서 사용자가 입력한 문자가 삽입되어야 할 것이다.
    • 위 아래 방향키를 통해 command history 를 탐색할 수 있게 만들라. (주. 그러니까 여기서 하라는 거는 방향키 up을 누르면 이전에 입력한 명령이 나타나고 다시 한 번 up을 누르면 그 이전에 입력한 명령이 나타나게 만들라는 것이다. 당연히 바로바로 편집이 가능한 상태여야 한다.)
    • 모든 명령줄 또는 일부 명령줄을 cut, copy, paste 할 수 있도록 하라. key squence는 당신이 선호하는 대로 만들라.
    • ctrl + left 또는 ctrl + right로 왼쪽 단어 또는 오른쪽 단어로 갈 수 있게 하라.(주. 원문에는 move directly by word라고 되어 있으니 해석하기 나름인듯.)
    • home 키 또는 end 키를 누르면 해당 명령줄의 맨 처음 또는 맨 끝으로 가게 만들라.
    • (주. 여기 부분은 원문으로 남겨놓겠음.) Write AND edit a command over a few lines. In that case, we would love that ctrl+UP and ctrl+DOWN allow to go from one line to another in the command while remaining in the same column or otherwise the most appropriate column.
    • &&, || 가 괄호로 감싸져 있으면 그에 맞는 우선순위를 적용하라. bash처럼.
    • bash에서의 wildcard(*)

 

 

화이팅 !!

 

 

 

'Code 42 > Minishell' 카테고리의 다른 글

Minishell 허용 함수 정리  (0) 2020.12.28
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom