π± λͺ¨λ₯΄κ² λ€ (2021.08.07)
- λκ°λ₯Ό μκΈ° μ΄μ μ λͺ¨λ₯΄λ κ² μκ³ , λμμ λͺ¨λ₯΄κΈ° μ΄μ μ μ κ²μ΄ μλ€. λͺ¨λ₯΄λ κ²κ³Ό μλ κ²μ λκ° λ¨Όμ λ κ²λ μμ΄ λμ΄κ°λ€. νμ§λ§ νλ‘κ·Έλλ°μ μμν μ΄νλ‘ κ·Έ λ μ¬μ΄μ λΉμ€μ κ΅³μ΄ λΉκ΅νμ§ μμλ λͺ¨λ₯΄λ κ²μ΄ μλμ μ΄λ€. κ·Έλ λ€λ©΄ λλ μ€λλ μ΄μ¬ν λͺ°λΌκ°κ³ μλ€κ³ νννλ κ²μ΄ μ¬λ°λ₯΄μ§ μΆλ€. μ¬μ€ μ§κΈ λ΄κ° λ¬΄μ¨ λ§μ νκ³ μλμ§ λͺ¨λ₯΄κ² λ€.
π± μ€λμ μ΄μ
- λμ΄λ§κ°λ μμμμ±κΈκ³Ό κ·Έ μμ μ€ν λͺ©λ‘λ€.
- μμ λ μ½λλ€μ μ μμλ νμΈ λ° λ¬Έμ μ μ¬νμΈ
- μ½λ‘λλ‘ μΈν ν΄λ¬μ€ν° μΆμ
μ ν 2μ£Ό μ°μ₯ (4λ¨κ³)
π± μ§ν μ€μΈ νλ‘μ νΈ (projects in progress)
- minishell (with sungclee)π
- inception π
π± νλ‘μ νΈ (minishell)
π μ체 리뷰 κ²°κ³Ό.
1. μ€κ°λ
- bashνκ²½μ μ νν μμ§μμ λν μ΄ν΄λκ° λΆμ‘±νλ€. κΈ°λ³Έ μ΄ν΄λ₯Ό λ°νμΌλ‘ νλ bashμ μμ§μλ€μ λν΄μ μλͺ»λ κ°λ
μ μ½λμ λ§μ΄ λ°μνμλ€.
2. λμ ν λΉ
- ν μμμ λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ μ¬μ©νλ λμ μμ΄μ κ°μ© ν¨μλ€μ μ νν μ΄ν΄νμ§ μμμ λ¬Έμ κ° λ°μνμλ€. κ°μ λͺ
λ Ήμ λν΄μ κ°μ κ²°κ³Όκ° λμΆλμ΄μΌ νλ κ² μΌλ°μ μ΄μ§λ§ λ°λ³΅μ μΌλ‘ κ°μ λͺ
λ Ήμ μνν λ κ²°κ΄κ°μ΄ λ¬λΌμ§λ λ¬Έμ κ° μμλ€.
3. μ λ§€λͺ¨νΈ
- λλ£μ μ μκΈ°μ€κ³Ό λ²μλ₯Ό λͺ
νν νμ§ λͺ»ν κ²μμ λ°μν μμΈλ€μ΄ κ²°κ΅ λ§μ§λ§ μλ‘ μΆ©λμ μΌμΌμΌ°λ€.
π λ¬Έμ ν΄κ²° case01, "cat < test.txt | invalid_cmd > result.txt"
μ ν¨νμ§ μμ λͺ
λ Ήμ΄(invalid_cmd)κ° νμ΄νλΌμΈ λ€μ μ‘΄μ¬νλ€. μ λ§€λͺ¨νΈν κΈ°μ€μΌλ‘ μμ±λ κ°μμ κΈ°λ₯λ€μ΄. μ
μΆλ ₯ μ²λ¦¬λ°©μκ³Ό λ€μ€ νμ΄ν λ‘μ§μ λν μ μ© λ°©μμ μΆ©λμ μΌμΌμΌ λ€μ νμ΄νμ κ°μ λ
Όλ¦¬κ° μ μ©λμ§ λͺ»νμκ³ μ΄λ₯Ό μμ νμλ€.
# bashνκ²½ : result.txtλ₯Ό μλ‘ μμ±νλ€.
bash-3.2$ cat < test.txt | invalid_cmd > result.txt
bash: invalid_cmd: command not found
bash-3.2$ ls result.txt result.txt
# minishellνκ²½ : μ²λ¦¬κΈ°μ€μ λͺ
νννκ³ κ°κ° κ°μ μλ¦¬κ° λ°μλλλ‘ μμ νμλ€.
minishell-1.0 %% cat < test.txt | invalid_cmd > result.txt
minishell: invalid_cmd: command not found
minishell-1.0 %% ls result.txt result.txt
π λ¬Έμ ν΄κ²° case02, "cat < a.txt > b.txt >> < c.txt < test.txt"
μ€κ°μ μ
μΆλ ₯ μΈμκ° μ¬λ°λ₯΄μ§ μλ€. μ΄λ΄ κ²½μ° ν ν° μλ¬κ° λ°μλλλ° ν ν°μλ μ€λ³΅λ μ
μΆλ ₯μ λν΄ μ΄λ ν κ·μΉμ±λ 무μλλ κ² λ§μ§λ§ λλ κ·μΉμ±μ λ°λ₯΄λλ‘ μμ±νμκ³ μ΄λ₯Ό μμ νμλ€. (μ€κ°λ
)
# μ€νμ€λΉ. minishell-1.0 %% cat test.txt klist
minishell-1.0 %% cat a.txt aaaaa
minishell-1.0 %% cat b.txt bbbb
minishell-1.0 %% cat c.txt ccccccc
# minishell
minishell-1.0 %% cat < a.txt > b.txt >> < c.txt < test.txt
minishell: <: syntax error near unexpected token
minishell-1.0 %% cat b.txt bbbb # ν ν°μλ¬μ λν΄μ κ·μΉμ±μ 무μ.
# bash
bash-3.2$ cat < a.txt > b.txt >> < c.txt < test.txt
bash: syntax error near unexpected token `<''
bash-3.2$ cat b.txt bbbb # ν ν°μλ¬μ λν΄μ κ·μΉμ±μ 무μ.
π λ¬Έμ ν΄κ²° case03, "wc > a.txt << ENDA | cat > b.txt >> c.txt << ENDB"
μλ±ν μΆλ ₯ κ²°κ³Όμ μΌμ νμ§ μμ κ²°κ³Όλ₯Ό 보μλ case03μμ λμ ν λΉ λ¬Έμ μ λ€μκΈ μ€κ°λ
μ νμΈν μ μμλ€.νμ΄λνλ¨ΌνΈμ μ
λ ₯μ μΆλ ₯νμΌμ λ겨주λ μν©μ λͺ
λ Ήμ΄μ κ²°κ³Όκ° μλ μ
λ ₯μ κ·Έλλ‘ μ λ¬νλ λ°©μμΌλ‘ λ‘μ§μ μμ±νμκ³ , λ§μΉ μ΄λ ν λͺ
λ Ήμλ catμ΄ μλν κ²κ³Ό κ°μ κ²°κ³Όλ‘ μ΄μ΄μ‘λ€. λͺ
λ Ήμ΄ μΈμλ₯Ό κ·μΉμ λ§κ² μ¬ν λΉνλ κ³Όμ μμ λ¬Έμ κ° μμ΄μ μΆλ ₯κ²°κ³Όκ° ν λ²μ© λ¬λΌμ§λ λ¬Έμ κΉμ§ κ°μ§κ³ μμκ³ , μμ λ΄μ©λ€μ μμ νμλ€.
# bash
bash-3.2$ wc > a.txt << ENDA | cat > b.txt >> c.txt << ENDB
> abcdefg
> ENDA
> hi
> ENDB
bash-3.2$ cat a.txt
1 1 8 # νμ΄ν μ΄μ 첫λ²μ§Έ νμ΄λ
μ μΆλ ₯λ°μ
bash-3.2$ cat b.txt # νμ΄ν μ΄ν μ€κ° μΆλ ₯μ λν κ·μΉμ±μ μ©
bash-3.2$ cat c.txt ccccccc hi # νμ΄ν μ΄ν μΆλ ₯μ λν κ·μΉ λ° μ
λ ₯λ°μ
# minishell
minishell-1.0 %% wc > a.txt << ENDA | cat > b.txt >> c.txt << ENDB
> 123
> ENDA
> 123456789
> ENDB
minishell-1.0 %% cat a.txt
1 1 4 γ
€ # νμ΄ν μ΄μ 첫λ²μ§Έ νμ΄λ
μ μΆλ ₯λ°μ
minishell-1.0 %% cat b.txt # νμ΄ν μ΄ν μ€κ° μΆλ ₯μ λν κ·μΉμ±μ μ©
minishell-1.0 %% cat c.txt ccccccc hi 123456789 # νμ΄ν μ΄ν μΆλ ₯μ λν κ·μΉ λ° μ
λ ₯λ°μ
'μΌμ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
#011. μ΄μ΄ μ’μμ§ (0) | 2021.08.17 |
---|---|
#010. μμΉ¨νμΈκ° (0) | 2021.08.11 |
#008. λ―Έλμ Έμ λ³ν (0) | 2021.08.05 |
#007. λ―Έλμ Έμ κΈ°λ³Έ (0) | 2021.08.04 |
#006. μ€νλΌμΈκ³Ό νμ (0) | 2021.08.02 |