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 optionsexport
without any optionsunset
without any optionsenv
without any options and any argumentsexit
wtihout any options
- '-n' 옵션을 가지는
;
는 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 History
와line 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 |
---|
최근댓글