42seoul/circle-3

[ minishell ] 1. 사전지식

saniii 2022. 5. 15. 07:48

# shell

  • 명령어 해석기 command interpreter
    • 사용자가 입력한 명령어를 해석하여 커널에 전달 
    • 터널과 사용자간의 대화식 인터페이스를 제공
  • 로그인 할 때 실행되어 사용자별로 사용 환경 설정을 가능하게 한다.
  • 강력한 스크립트 언어
  • 리다이렉션과 파이프 기능을 제공하고 포그라운드/백그라운드 프로세스를 실행

 

# bash shell

  • /bin/bash
  • 명령어 완성 기능, 히스토리, 명령어 치환, 편집 등의 지원

 

# 환경 변수

  • 전체 shell에서 사용 가능한 전역 변수
  • 서브 shell에 기능 상속 가능
  • env로 환경 변수를 확인할 수 있다. 

# 셸 변수

  • 현재 로그인 shell에서만 사용 가능한 지역 변수
  • 서브 shell에 기능 상속 불가능
  • set으로 shell 변수를 확인할 수 있다.

 

 

 

 

# 프롬프트 

https://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9_%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8

 

명령 프롬프트 - 위키백과, 우리 모두의 백과사전

프롬프트(prompt)는 컴퓨터 터미널 또는 터미널 에뮬레이터의 CLI(커맨드 라인 인터페이스)의 명령줄 대기모드를 가리킨다. 일반적으로 커맨드 프롬프트(command prompt) 또는 셸 프롬프트(shell prompt)

ko.wikipedia.org

 

 

 

# 프로세스

  • CPU와 메모리를 할당받아 실행시키는 프로그램으로 프로세스마다 고유의 프로세스 ID(PID)를 할당받는다. 
  • 포그라운드 
    • 사용자와 상호작용하는 프로세스
    • 터미널에 직접 연결되어 입출력을 주고받는다.
    • 명령 입력 후 수행 종료까지 기다려야 한다.
    • 응용 프로그램, 명령어 ...
  • 백그라운드 
    •  사용자와 직접적인 대화없이 뒤에서 실행되는 프로세스
    • 시스템 프로그램, 데몬 ,,,
  • 사용자가 새로운 프로세스를 생성하기 위해서는 시스템 호출 함수 fork() 와 exec()를 사용할 수 있다.
    • fork()
      • 새로운 프로세스를 위한 메모리를 할당
      • 새로운 프로세스를 만들 때 기존 프로세스를 복제
      • 원본 프로세스 -> 부모 프로세스 (parent) , 복제된 프로세스 -> 자식 프로세스 (child)
    • exec() 
      •  새로운 프로세스를 위해 메모리를 할당하지 않음
      • 호출하는 프로세스가 새로운 프로세스로 변경된다. 
      • 호출한 프로세스 메모리를 새로운 프로세스가 덮어버려 exec()를 호출한 프로세스는 사라지고 exec()로 호출된 프로세스만 메모리에 남는다. 
  • 시그널
    • 프로세스에게 발생한 이벤트를 전달해주는 소프트웨어 인터럽트
    •  

 

 

 

# 리다이렉션 (redirection)

  • 표즌 입력, 출력의 방향을 재지정
  • 표준 입력, 출력, 에러가 화면이 아닌 파일로 대체된다. 
  • 연산자 
    • >   
      • 명령을 프린터나 파일에 출력
      • 파일이 존재하지 않으면 새로운 파일을 만들고 같은 파일이 존재하면 덮어쓴다. 
    • >>  
      • 파일이 있는 경우 지정된 파일에 결과를 '추가'
      • 파일이 존재하지 않으면 지정된 이름으로 파일을 생성
    • <    
      • 키보드가 아닌 지정된 파일에서 입력 내용을 읽어옴
    • >& 
      • 명령의 출력을 다른 명령의 입력으로 보냄
    • <& 
      • 명령의 입력을 다른 명령의 출력으로 보냄

 

 

 

 

# 파이프 ( | )

  • 둘 이상의 명령을 함께 묶어 출력 결과를 다른 프로그램의 입력으로 전달하는 기능
형식 :  명령어1 | 명령어2 | 명령어3 ..
  • 명령어1의 출력 결과는 명령어2의 입력으로 전달되고 명령어2의 출력 결과는 명령어3의 입력이 된다. 
  • 가장 마지막 명령어의 출력 결과를 화면으로 출력한다. 

 

 

# 경로

  • 절대 경로
    • 시작 위치와 상관없이 경로에 모든 디렉터리를 포시
    • 경로의 시작은 루트(/)부터 시작된다.
  • 상대 경로
    • 현재 작업 중인 디렉터리를 기준으로 표시하는 경로

 

 

# 내장 명령어

  • export
  • unset
  • env
  • exit
  • echo
  • cd
  • pwd326

 

 

 

 

 

[참고]

이기적 리눅스마스터 2급