선행 지식

hyenam·2021년 11월 26일
0

minishell

목록 보기
1/6

미니쉘 과제를 수행하는데 있어서, 자신이 구현해야할 기능들을 살펴보고 있다.

서브젝트

구현 해야 하는 것

  • 닫히지 않은 따옴표, 특수문자(\,;등)등을 해석하지 말아야한다.
  • 전역변수는 한개만 사용가능
  • 명령어를 입력할 수 있는 프롬프트를 보여주어야 한다.
  • 작업 히스토리를 가지고 있어야 한다.
  • 실행파일을 찾아 실행할 수 있어야 한다.
  • '는 해석 금지
  • "는 $빼고 해석 금지
    ??

구현 명령어 목록

  • echo (-n 옵션 포함)
  • cd (오직 상대 또는 절대 경로만 사용)
  • pwd
  • export
  • unset
  • env
  • exit

리다이렉션

  • <
  • >
  • <<
  • >>

그외

  • 파이프 (|)
  • 환경변수
  • $?
  • ctrl-C, ctrl-D, ctrl-\

잘 이해가 가지 않는 부분이 많아서 이제부터 그 명령어와 단어의 의미를 공부해볼 것이다.

의미 정리

닫히지 않은 따옴표, 특수문자(\,;등)등을 해석하지 말아야한다.
아마 따옴표 안끝나면 오류출력이나 그냥 문자열로 인식하라는 의미??인 것 같다.

명령어를 입력할 수 있는 프롬프트를 보여주어야 한다.
쉘을 실행 시켰을때 $> 이것을 출력하고 사용자에게 명령어를 입력받을 수 있게끔 하라는 의미.

작업 히스토리를 가지고 있어야 한다.
명령 히스토리라고도 하는데 쉘로 작업을 하면서 자신이 입력했던 명령어들의 목록을 뜻한다.

사용자가 입력한 명령어들을 저장을 하고 보여줄 수 있어야 한다는 의미이다.

실행파일을 찾아 실행할 수 있어야 한다.
말 그대로 사용자가 실행을 시킬 실행파일의 경로를 입력을 하면 그 경로로 찾아가 실행파일을 실행을 시켜야 한다는 뜻이다.

'는 해석 금지
쉘에서 '를 입력을 하면 quote>이 표시와 함께 계속해서 입력할 수 있도록 되어 있는데 이 기능을 구현하지 말라는 이야기 인 것 같다.

"는 $빼고 해석 금지
$는 변수를 의미한다. 문장이 들어왔을때 변수 말고는 단순 문자열로 인식을 하라는 의미?이다.



구현 명령어 목록

  • echo (-n 옵션 포함)
    문자열 출력 명령어
    -n은 개행 출력하지 않게 하는 옵션
    (기본적으로 echo는 마지막에 개행을 출력한다.)

  • cd
    자신이 위치하고 있는 폴더의 위치를 바꾸는 명령어

  • pwd
    현재 자신이 위치하고 있는 폴더의 절대 경로를 출력해주는 명령어

  • export
    사용자 환경 변수를 전역변수로 바꾸어주는 명령어

  • unset
    지정한 전역변수를 해제해주는 명령어

  • env
    전역 변수의 설정 및 조회를 하게 해주는 명령어

  • exit
    shell을 종료시켜주는 명령어



리다이렉션

  • <
    파일 읽기
    입력을 리다이렉션
  • >
    파일 쓰기(overwrite, 덮어쓰거나 새파일)
    출력을 리다이렉션
  • <<
    파일 읽기
    현재 소스에서 구분자를 포함한 줄을 만나기 전까지 입력값을 읽어들인다. 기록을 업데이트할 필요는 없다
  • >>
    파일 쓰기(insert, 기존파일에 이어쓰기. 기존 파일이 없다면 새로 생성)

그외

  • 파이프 (|)
    여러 명령어를 같이 실행시키는 명령어

  • 환경변수
    bash를 실행하는 모든 사람에게 영향을 주는 변수
    프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임으로 쉘에서 정의되고 실행하는 동안 프로그램에 필요한 변수

  • $?
    변수 사용할때 앞에 $문자를 붙임

  • ctrl-C, ctrl-D, ctrl-\
    셋 다 프로세스를 종료하는 단축키이다.
  • ctrl-C
    INT 신호 (SIGINT)를 내보낸다. 기본적으로 프로세스를 종료하는 역할을 한다

    SIGINT
    터미널 인터럽트 신호.

  • ctrl-D
    EOF입력
  • ctrl-\
    QUIT 신호 (SIGQUIT)를 내보낸다. 기본적으로 프로세스를 종료시킨 뒤 코어를 덤프하는 역할을 한다.

    SIGQUIT
    터미널 종료 신호.

  • 상호작용이 가능할때
    ctrl-C는 새로운 줄에 새로운 프롬프트를 출력.
    ctrl-D는 쉘을 종료.
    * ctrl-\은 아무런 동작도 하지 않는다.


학습에 참고한 사이트

profile
공부한 걸 정리하고 있습니다.

0개의 댓글