Skip to content

🐟 bash shell 기반의 mini shell λ§Œλ“€κΈ°

Notifications You must be signed in to change notification settings

dpfls0922/42-minishell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Minishell

μ‰˜λ§ŒνΌμ΄λ‚˜ μ•„λ¦„λ‹€μš΄ 그것

μš”μ•½:이번 ν”„λ‘œμ νŠΈμ˜ λͺ©ν‘œλŠ” κ°„λ‹¨ν•œ μ‰˜μ„ λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€.λ§žμ•„μš”, λ‹Ήμ‹ λ§Œμ˜ μž‘μ€ bashμ΄μš”.ν”„λ‘œμ„ΈμŠ€λ‚˜ 파일 λ””μŠ€ν¬λ¦½ν„°μ— λŒ€ν•΄ μ•„μ£Ό 많이 배우게 될 κ²λ‹ˆλ‹€.

Introduction

μ‰˜μ€ IT의 νƒœμ΄ˆλΆ€ν„° ν•¨κ»˜ν–ˆμŠ΅λ‹ˆλ‹€.

κ·Έ λ‹Ήμ‹œ, λͺ¨λ“  κ°œλ°œμžλ“€μ€Β 1κ³Ό 0으둜만 이루어진 μŠ€μœ„μΉ˜λ‘œ 컴퓨터와 ν†΅μ‹ ν•˜λŠ” 것은 ꡉμž₯히 μ„±κ°€μ‹œλ‹€λŠ” 점에 λ™μ˜ν–ˆμ–΄μš”.

μ˜μ–΄μ™€ λΉ„μŠ·ν•œ μ–Έμ–΄λ‘œ μž‘μ„±λœ λͺ…λ Ήμ–΄μ˜ 쀄을 μ΄μš©ν•΄ 컴퓨터와 μ†Œν†΅ν•˜λŠ”Β ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κ² λ‹€λŠ” 아이디어λ₯Ό λ– μ˜¬λ¦° 것도 λ‹Ήμ—°ν•œ μˆ˜μˆœμ΄μ—ˆμ£ .

κ°μ‚¬ν•˜κ²Œλ„Β Minishellκ³Ό ν•¨κ»˜λΌλ©΄,Β Windowsκ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ•˜μ„ μ‹œμ ˆ μ‚¬λžŒλ“€μ΄ κ²ͺμ—ˆλ˜ 문제λ₯Ό λ§ˆμ£Όν•΄λ³Ό 수 μžˆμ„ κ²λ‹ˆλ‹€.

Mandatory part

ν”„λ‘œκ·Έλž¨ 이름 minishell
μ œμΆœν•  파일 Makefile, *.h, *.c
Makefile all, clean, fclean, re
인자
μ‚¬μš©κ°€λŠ₯ν•œ μ™ΈλΆ€ ν•¨μˆ˜ readline, rl_clear_history, rl_on_new_line, rl_replace_line, rl_redisplay, add_history, printf, malloc, free, write, access, open, read, close, fork, wait, waitpid, wait3, wait4, signal, sigaction, sigemptyset, sigaddset, kill, exit, gextcwd, chdir, stat, lstat, fstat, unlink, execve, dup, dup2, pipe, opendir, readdir, closedir, strerror, perror, isatty, ttyname, ttyslot, ioctl, getenv, tcsetattr, tcgetattr, tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs
Libft μ‚¬μš©μ—¬λΆ€ Yes
μ„€λͺ… μ‰˜μ„ λ§Œλ“œμ„Έμš”

λ‹Ήμ‹ μ˜ μ‰˜μ€:

  • μƒˆλ‘œμš΄ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•  수 μžˆλŠ”Β ν”„λ‘¬ν”„νŠΈλ₯Ό λ³΄μ—¬μ€˜μ•Ό ν•©λ‹ˆλ‹€.
  • μž‘μ—…Β νžˆμŠ€ν† λ¦¬λ₯Ό κ°–κ³  μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • (PATH λ³€μˆ˜λ‚˜ μƒλŒ€, μ ˆλŒ€ 경둜λ₯Ό ν™œμš©ν•˜μ—¬) μ˜¬λ°”λ₯Έ μ‹€ν–‰ νŒŒμΌμ„ μ°Ύμ•„ μ‹€ν–‰ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • μ „μ—­λ³€μˆ˜λŠ” ν•œ 개 초과λ₯Ό μ‚¬μš©ν•  수 μ—†μœΌλ©°, μ™œ μ „μ—­λ³€μˆ˜λ₯Ό μ‚¬μš©ν–ˆλŠ”μ§€ 깊게 생각해 보고 κ·Έ 이유λ₯Ό μ„€λͺ…ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • λ‹«νžˆμ§€ μ•Šμ€ λ”°μ˜΄ν‘œλ‚˜ νŠΉμ •λ˜μ§€ μ•Šμ€ 특수문자 (\λ‚˜ ; λ“±...) 을 ν•΄μ„ν•˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.
  • ' (단일 λ”°μ˜΄ν‘œ) μ•ˆμ— μžˆλŠ” λ©”νƒ€λ¬Έμžλ₯Ό ν•΄μ„ν•˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.
  • " (이쀑 λ”°μ˜΄ν‘œ) μ•ˆμ— μžˆλŠ” $ (λ‹¬λŸ¬ 기호)λ₯Ό μ œμ™Έν•œ λ©”νƒ€λ¬Έμžλ₯Ό ν•΄μ„ν•˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.
  • λ‹€μŒμ˜ λ¦¬λ‹€μ΄λ ‰μ…˜μ„ κ΅¬ν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€:
    • <λŠ” μž…λ ₯을 λ¦¬λ‹€μ΄λ ‰μ…˜ ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€
    • >λŠ” 좜λ ₯을 λ¦¬λ‹€μ΄λ ‰μ…˜ ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€
    • <<에 ꡬ뢄 기호λ₯Ό μ§€μ •ν•œ λ‹€μŒ, ν˜„μž¬ μ†ŒμŠ€μ—μ„œ κ΅¬λΆ„μžλ₯Ό ν¬ν•¨ν•œ 쀄을 λ§Œλ‚˜κΈ° μ „κΉŒμ§€ μž…λ ₯값을 μ½μ–΄λ“€μž…λ‹ˆλ‹€. 기둝을 μ—…λ°μ΄νŠΈν•  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€!
    • >>λŠ” 좜λ ₯을 μΆ”κ°€ λͺ¨λ“œλ‘œ λ¦¬λ‹€μ΄λ ‰μ…˜ν•©λ‹ˆλ‹€.
  • νŒŒμ΄ν”„(Β | 문자)λ₯Ό κ΅¬ν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€. 각 νŒŒμ΄ν”„λΌμΈλ§ˆλ‹€ λͺ…λ Ήμ–΄μ˜ 좜λ ₯값은 νŒŒμ΄ν”„λ‘œ μ—°κ²°λ˜μ–΄ λ‹€μŒ λͺ…λ Ήμ–΄μ˜ μž…λ ₯κ°’μœΌλ‘œ λ“€μ–΄κ°€μ•Ό ν•©λ‹ˆλ‹€.
  • ν™˜κ²½λ³€μˆ˜Β ($Β λ‹€μŒμ— λ¬Έμžμ—΄μ΄ μ˜€λŠ” ν˜•μ‹) 은 κ·Έλ“€μ˜ κ°’μœΌλ‘œ ν™•μž₯λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • $?λŠ” κ°€μž₯ μ΅œκ·Όμ— μ‹€ν–‰ν•œ ν¬κ·ΈλΌμš΄λ“œ νŒŒμ΄ν”„λΌμΈμ˜ μ’…λ£Œ μƒνƒœλ₯Ό ν™•μž₯ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€
  • ctrl-C,Β ctrl-D 그리고 ctrl-\Β λŠ” bash와 λ™μΌν•˜κ²Œ λ™μž‘ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.
  • μƒν˜Έμž‘μš©μ΄ κ°€λŠ₯ν•  λ•Œ:
    • ctrl-CλŠ” μƒˆλ‘œμš΄ 쀄에 μƒˆλ‘œμš΄ ν”„λ‘¬ν”„νŠΈλ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€
    • ctrl-DλŠ” μ‰˜μ„ μ’…λ£Œν•©λ‹ˆλ‹€.
    • ctrl-\은 μ•„λ¬΄λŸ° λ™μž‘λ„ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • λ‹€μŒμ˜Β λ‚΄μž₯ κΈ°λŠ₯듀을 μ‹€ν–‰ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€:
    • nΒ μ˜΅μ…˜μ„ μ‚¬μš©ν•  수 μžˆλŠ”Β echo
    • 였직 μƒλŒ€ λ˜λŠ” μ ˆλŒ€κ²½λ‘œλ§Œ μ‚¬μš©ν•˜λŠ”Β cd
    • μ˜΅μ…˜μ΄ μ—†λŠ”Β pwd
    • μ˜΅μ…˜μ΄ μ—†λŠ”Β export
    • μ˜΅μ…˜μ΄ μ—†λŠ”Β unset
    • μ˜΅μ…˜μ΄λ‚˜ μΈμžκ°’μ΄ μ—†λŠ”Β env
    • μ˜΅μ…˜μ΄ μ—†λŠ”Β exit

readline()Β ν•¨μˆ˜λŠ” λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό μΌμœΌν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό κ³ μΉ  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§ŒΒ λ‹Ήμ‹ μ΄ 직접 μž‘μ„±ν•œ μ½”λ“œλŠ” λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό μΌμœΌν‚¬ 수 μžˆλ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

πŸ’‘μ—¬λŸ¬λΆ„μ€ 과제의 μ„€λͺ…μ—λ§Œ κ΅­ν•œλ˜λ„λ‘ 섀계해야 ν•©λ‹ˆλ‹€. μš”κ΅¬ν•˜μ§€ μ•Šμ€ 것듀을 λ§Œλ“œμ‹€ ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€.

의문점이 생긴닀면 bashλ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

λ―Έλ‹ˆμ‰˜ 평가

스크란샷 2024-10-11 α„‹α…©α„Œα…₯ᆫ 1 21 10

About

🐟 bash shell 기반의 mini shell λ§Œλ“€κΈ°

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published