๐ฑ ์ฌํ์ด์๋ค(2021.07.31)
- ์ธ์์ ์ฌํ์ด ์๋ค๋๊ฒ ์ข์๋ง์ผ๊น. ์์ผ๋ก 50๋ ์ ๋ ์ด์์ผํ๊ณ ํน์ฌ ๊ทธ๋ ์ง ์๋ค๊ณ ํ๋๋ผ๋ ๋์ด์ ํ์ด์ผํ ๊ฒ์ด ์๋ ์ฌ์์ด, ์๊ฐ๋ณด๋ค ์ง๋ฃจํ์ง ์์์ง.. ๊ฒ์์ ๋ชจ๋ ์์ดํ ์ ๋ค๊ฐ์ง๊ณ ์คํ ๋ฆฌ๋ชจ๋๋ฅผ ์ ๋ถ ํด๋ฆฌ์ดํ ๊ณ ์ธ๋ฌผ์ 300๋ฒ์งธ ํ๋ฃจ์ฒ๋ผ.
๐ฑ ์ค๋์ ์ด์
- ํ๋ก์ ํธ ๊ด๋ จ ๋ฐฉํฅ์ฑ ํ ์ ๋ฐ ๋ฐฐํฌ์ฉ ์์ฑ ํ์.
๐ฑ ์งํ์ค์ธ ํ๋ก์ ํธ (projects in progress)
- minishell (with sungclee)๐
- inception ๐
๐ฑ ํ๋ก์ ํธ (minishell)
- ์ฐ๋ฆฌ๋...์ด ์๋๊ณ ๋๋ printf ํ๋ก์ ํธ๋ฅผ ํตํด ์ฐ์ ์์๋ฅผ ํ๋ณํ๋๋ฒ์ ๋ํด์ ์ฝ์งํ ๊ฒฝํ์ด ์๋ค.
- ๊ทธ ๊ฒฝํ์ด ์ค๋ ๋์๊ณ ๋ฏผ์ ๋ํ ๋ต์ด ๋์ด์ฃผ๊ธฐ๋ฅผ ๋ฐ๋ ๋ฟ์ด๋ค.
๐ ์๋์ํ
- bashํ๊ฒฝ์ ๋์๊ฒฐ๊ณผ๋ฅผ ์ฌ๋ฌ๋ฒํ์ธํ๋๊ฑด ๋์๊ฒ ํฐ๋์์ด ๋๊ณ ์๋ค. ๋ด๊ฐ ์๊ณ ์๋ ์ฌ์ค์ bashํ๊ฒฝ์์ ๋ค์๊ธ ํ์ธํ๋๊ฒ๋ง์ผ๋ก๋ ๊ตฌํ๋ฐฉํฅ์ ๋ํ ๋ธ๋ ์ธ์คํ ๋ฐ์ด ๋๋ค.
# ํ
์คํธ01์ด๋ผ๋ ํ์ผ์ "111111111111111" ๋ฌธ์์ด์ ๋ฃ์
bash-3.2$ cat test01.txt
111111111111111
# ํ
์คํธ02๋ผ๋ ํ์ผ์ "222222222222222" ๋ฌธ์์ด ๋ฃ์
bash-3.2$ cat test02.txt
222222222222222
# ์คํ 1 ์ถ๋ ฅ์ test02์ ์ด์ด์ฐ๊ธฐ(>>)ํ ๊ฑด๋ฐ ์
๋ ฅ์ test01๋กํจ
bash-3.2$ cat >> test02.txt < test01.txt
# ์คํ๊ฒฐ๊ณผ 01
bash-3.2$ cat test01.txt
111111111111111
bash-3.2$ cat test02.txt
222222222222222
111111111111111
# ์คํ 02 test02์ ์ถ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ์ด์ด์ฐ๊ธฐ๋ก ํ๋๋ฐ, ์ฌ์ค๊ทธ๊ฑด test01์ ๋ฎ์ด์ฐ๊ธฐํ ๊ฑฐ์
bash-3.2$ cat >> test02.txt > test01.txt
aaaaaaaaaaaaaaa # cat์ ํ์ค์
๋ ฅ 11111
bbbbbbbbbbbbbbb # cat์ ํ์ค์
๋ ฅ 22222
# ์คํ๊ฒฐ๊ณผ 02
bash-3.2$ cat test02.txt
222222222222222
111111111111111
bash-3.2$ cat test01.txt
aaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
# ์คํ 03 test02 ์ด์ด์ฐ๊ธฐ์ถ๋ ฅ์ธ๋ฐ ์ฌ์ค test01 ์ด์ด์ฐ๊ธฐ์ถ๋ ฅ์ด๋ค
bash-3.2$ cat >> test02.txt >> test01.txt
ใ
ใ
ใ
ใ
ใ
ใ
ใ
ใ
ใ
# cat์ ํ์ค์
๋ ฅ
# ์คํ๊ฒฐ๊ณผ 03
bash-3.2$ cat test02.txt
222222222222222
111111111111111
bash-3.2$ cat test01.txt
aaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
ใ
ใ
ใ
ใ
ใ
# ์คํ04 ์ ์ ์ถ๋ ฅ์ test02๋กํ ๊ป๋ฐ ์
๋ ฅ์ ํ์ด๋
์ผ๋ก "END"๊น์ง๋ฐ๊ณ ์ฌ์ค ์ถ๋ ฅ์ test01์ ๋ฎ์ด์ฐ๋๊ฑฐ์๋ค.
bash-3.2$ cat >> test02.txt << END >> test01.txt
> what # ํ์ด๋
์ผ๋ก ์
๋ ฅ๋ฐ์ 11111
> is # ํ์ด๋
์ผ๋ก ์
๋ ฅ๋ฐ์ 2222222
> # ํ์ด๋
์ผ๋ก ์
๋ ฅ๋ฐ์ 33333333
> this # ํ์ด๋
์ผ๋ก ์
๋ ฅ๋ฐ์ 444444444
> END # ํ์ด๋
์ข
๋ฃ๋ฌธ์ "END"
# ์คํ๊ฒฐ๊ณผ 04
bash-3.2$ cat test02.txt
222222222222222
111111111111111
bash-3.2$ cat test01.txt
aaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
ใ
ใ
ใ
ใ
ใ
what
is
this
bash-3.2$
# ์คํ05 ๋จผ์ ๋ฆฌ๋๋ ์
์
๋ ฅ(<)์ text01๋ก ์ฃผ๊ณ , ๋ค์ ๋ช
๋ น์ด์ ์ธ์๋ก test02 ๋๊ฒจ์ค๋ค.
bash-3.2$ cat < test01.txt test02.txt
bash-3.2$ cat test02.txt
bash-3.2$ cat test01.txt
aaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
ใ
ใ
ใ
ใ
ใ
what
is
this
what
is
this
bash-3.2$ # test02.txt๋ฅผ ์ฐ์ ์ํ๋ค.
# ํ์ผ์ด๋ฆ์ด ์๋ ์ธ์๋ฅผ ๋๊ฒจ์ค๊ฒฝ์ฐ์๋ ์๋ฌ๋ฉ์์ง๋ฅผ ๋์ฐ๋๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
bash-3.2$ cat < test01.txt inval
cat: inval: No such file or directory
bash-3.2$ ls
cub3D test test02.txt
minishell test01.txt
bash-3.2$
bash-3.2$ cat < inval test01.txt # test01.txt๋ฅผ ์ถ๋ ฅํ๋๊ฒ ๋ง์ผ๋.
bash: inval: No such file or directory # inval์ด๋ผ๋ ํ์ผ์ด ์กด์ฌํ์ง์์์ ์ค๋จ๋์๋ค.
๐ ์คํ์ฝ๋ ์์ฑ
- ์ฐ์ bashํ๊ฒฝ์ ๊ตฌํํจ์ ์์ด์ ๋์ ํ๋ก๊ทธ๋จ์ด ์ปค๋งจ๋๋ผ์ธ์ ์ด๋ป๊ฒ ์ ์ฅํ๋์ง, ๋ ์ ์ฅ๋ ์ปค๋งจ๋๋ผ์ธ์ ๋ถ์ํ๋ฉด์ ์ด๋ค๋ด์ฉ์ ๊ธฐ๋กํด์ผํ ์ง๋ฅผ ๊ฐ๋จํ ์คํํ๊ณ ํ์ธํด๋ณด์๋ค.
/* ์์ด๋์ด๋ ํ๋๊ทธ ๊ตฌ์กฐ์ฒด + ์ฐ์ ์์ํ๋ณ */
typedef struct s_flag
{
/* ์ ๋ถ๋ค ์์๋ก ์ด๊ธฐํ ํด๋๊ณ ์ฐ์ ์์๋ฅผ ์ธ๋ฑ์ค๋ฅผ ๊ทธ๋๋ก ์ฐ์ด์ ์ฐ์ ์์๋ฅผ ํ๋ณํ๊ฒ ํ ๊ฑฐ์ผ*/
/* ํ๋ง๋๋ก ํ๋๊ทธ๊ฐ ์์๋ฉด ๊ทธ ๊ธฐํธ๋ ์์ ์๋๊ฑฐ์ผ! */
int heredoc;/* ์ฌ๋ฌ ์
๋ ฅ๋ค๊ณผ ๋น๊ตํด์ ์๋ง๋ ๋ค์๊ฐ ์ฐ์ ๊ถ์ด์๊ฒ ์ง */
int rd_iput;/* ์ ํํ '<' ์ ๋ํ ํ๋๊ทธ*/
int rd_oput;/* ์ ํํ๊ฒ ์ด์ด์ฐ๊ธฐ '>>' ๋ ๋ฎ์ด์ฐ๊ธฐ '>' ๋ํด์์ผ, ํ์ํจ์์์์ ๋ญ์ธ์ง๋ ์์์ ํ๋ณํ ๊ฑฐ์ผ*/
int index; /* ํจ์ ๊ธธ์ด์งํ
๋ฐ ๊ทธ๋ฅ ์ฒจ๋ถํฐ ์ฌ๊ธฐ์ ์ธ๋ฑ์ค ๋ณ์ ๋ฃ์ด์ฐ์. */
} t_flag;
void cmd_redir_heredoc(t_command *cmd, t_list *env)
{
t_flag flag;
int i;
i = -1;
/* ์ธ๋ฑ์ค๋ฅผ ์ด์ค์ ๊ทธ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ค๋ฅผ ํ์ธ์ผํ๋ ๋ก์ง. ๊น์ง ์ด๋ฆด์์์ด.*/
/* ๊ฐ์ฅ ์ฐ์ ๊ถ์ด ์ฃผ์ด์ง๋ ์ธ๋ฑ์ค๋ฅผ ๋๊ฒจ์ฃผ๊ณ ๊ทธ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ค๋ฅผ ํ์ธํ๊ฒ ํ๋ฉด ๋ ๊ฒ๊ฐ๋ค. */
flag.index = -1;
while(cmd->cmd_line[++flag.index])
{/* ํ์ฑ๋ ๋ผ์ธ๋ฐฐ์ด์ ๋๊น์ง ํ์ํ๋ฉด์ ๊ฐ์ฅ๋ค์์๋ ๊ฑธ๋ก ํ๋๊ทธ์์น๋ฅผ ๊ฐฑ์ ํด์ฃผ๋ ค๊ณ ํ๋ค. */
/* ์ฐ์ ์ ํํ ๊ฑธ๋ฌ๋ด๋ ๋ฅ๋ ฅ์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ execve๋์ ํธํ์ฑ๋ ์๊ฐํด์ผํ๋ค. ์ ์ฒด๋ฅผ ๋๊ฒจ์ค์์๋ค.*/
if(ft_str_search(cmd->cmd_line[flag.index], "<<"))
flag.heredoc = flag.index;/* ๋ฐ๊ฒฌ๋ ์ง์ ์ ์ ์ฅํ๋ ค๋๊ฒ. */
else if(ft_str_search(cmd->cmd_line[flag.index], ">>"))
flag.rd_oput = flag.index;/* ๋ฐ๊ฒฌ๋ ์ง์ ์ ์ ์ฅํ๋ ค๋๊ฒ. */
else if(ft_str_search(cmd->cmd_line[flag.index], ">"))
flag.rd_oput = flag.index;/* ๋ฐ๊ฒฌ๋ ์ง์ ์ ์ ์ฅํ๋ ค๋๊ฒ. */
else if(ft_str_search(cmd->cmd_line[flag.index], "<"))
flag.rd_iput = flag.index;/* ๋ฐ๊ฒฌ๋ ์ง์ ์ ์ ์ฅํ๋ ค๋๊ฒ. */
}
/* ํ๋๊ทธ ํ์ฑ ๊ฒฐ๊ณผ๋ ํ์ธํด๋ณด๊ณ */
printf("flag.heredoc : [%d]\n", flag.heredoc);/* ์ ์ผ๋ ํ์ด๋
์ด ๋ช๋ฒ์งธ์ ์๋๋ */
printf("flag.rd_oput : [%d]\n", flag.rd_oput);/* ์ ์ผ๋ ์ถ๋ ฅ๋ฆฌ๋๋ ์
์ด ๋ช๋ฒ์งธ์ ์๋๋ */
printf("flag.rd_iput : [%d]\n", flag.rd_iput);/* ์ ์ผ๋ ์
๋ ฅ๋ฆฌ๋๋ ์
์ด ๋ช๋ฒ์งธ์ ์๋๋ */
printf("flag.index(end) : [%d]\n\n", flag.index);/* ๋ฌธ์์ด์ ๋์ ์ด๋๋.*/
/*ํ์ฑ๋ด์ฉ๋ ํ์ธํด๋ด*/
while(cmd->cmd_line[++i])
printf("cmd_cmd_line[%d] : [%s]\n", i, cmd->cmd_line[i]);
exit(0);/* ์คํ์ค์ด๋๊น ์์์ข
๋ฃ, ๋ฌธ์ ์๊ธฐ๋ฉด ์๋ผ */
}
๐ ๊ฒฐ๊ณผํ์ธ & ๋ถ์
- ์ถ๋ ฅ๊ฒฐ๊ณผ๊ฐ 99%, ๊ทธ ์ด์์ผ๋ก ํ์ ์ ๊ฐ๊น๋ค ํ๋๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ตณ์ด ์๊ฐํํด์ ํ์ธํ๋ํธ์ด๋ค. ๋ง๋์ง ํ๋ฆฐ์ง ์ง์ ํฐ๋ฏธ๋์ ํตํด ํ์ธํ ๊ฒ๋ค์ ๋ํด์๋ ์ธ์ ์ด๋์๋ ํ์ ์ ๊ฐ๋์ฐฌ ๋๋ต์ด ๊ฐ๋ฅํ๋ค.
junselee /minishell ./minishell
### #### ## ## ## ## ## ##### ## ## ####### #### ####
#### ## ## ### ### #### ## ## ## ## ## ## ## # ## ##
## ## ## ####### ## ## #### # ## ## ## # ## ##
## ## ### ####### ## ## ## ##### ####### #### ## ##
####### ## ## # ## ###### #### ## ## ## ## # ## # ## #
## ## ## ## ## ## ## ## ## ## ## ## ## ## # ## ## ## ##
## ###### ## ## ## ## ## ## ##### ## ## ####### ####### #######
minishell-1.0 %% cat > test02.txt << END >> test01.txt # ์ ๊ฒฝ์ฐ๋ฅผ ํ์ฑํ๋ฉด์ ํ๋๊ทธ๋ฅผ ์ฐ์ด๋ณด์.
flag.heredoc : [3] # ์ ์ผ๋ ํ์ด๋
์ด ๋ช๋ฒ์งธ์ ์๋๋
flag.rd_oput : [5] # ์ ์ผ๋ ์ถ๋ ฅ๋ฆฌ๋๋ ์
์ด ๋ช๋ฒ์งธ์ ์๋๋
flag.rd_iput : [1] # ์ ์ผ๋ ์
๋ ฅ๋ฆฌ๋๋ ์
์ด ๋ช๋ฒ์งธ์ ์๋๋
flag.index(end) : [7] # ๋ฌธ์์ด์ ๋์ ์ด๋๋, ์ฆ 'NULL'์ด ์ด๋๋.
cmd_cmd_line[0] : [cat] # cmd1
cmd_cmd_line[1] : [>] # ์
๋ ฅ๋ฆฌ๋๋ ์
์ด์ง๋ง ํ๋๊ทธ๋ ์ธ๋ฑ์ค๊ฐ ๊ฐ์ง์์ผ๋, ๋ค์ ์
๋ ฅ๋ฆฌ๋๋ ์
์ด ๋์๋ค.
cmd_cmd_line[2] : [test02.txt] # ๋ฆฌ๋๋ ์
๋ค์ ์ค๋ ํ์ผ๋ช
(๋ง์ง๋ง์ด ์๋์ด๋ ์คํ์ ๋์ด์ผํจ.)
cmd_cmd_line[3] : [<<] # ์ ์ผ๋ ํ์ด๋
์ ๋ผ์ธ[3]์ ์๋ค -> ํ๋๊ทธ ์ฐธ์ด๋ค.
cmd_cmd_line[4] : [END] # ํ์ด๋
๋ค์๋ ์ข
๋ฃ๋ฌธ์๊ฐ ์จ๋ค.
cmd_cmd_line[5] : [>>] # ์ ์ผ๋ ์
๋ ฅ๋ฆฌ๋๋ ์
์ ๋ผ์ธ[5]์ ์๋ค -> ํ๋๊ทธ๋ ์ฐธ์ด๋ค.
cmd_cmd_line[6] : [test01.txt] # ๋ฆฌ๋๋ ์
๋ค์ ์ค๋ ํ์ผ๋ช
(๋ง์ง๋ง์ด ์๋์ด๋ ์คํ์ ๋์ด์ผํจ.)
# ๊ทผ๋ฐ์ด์ ๋ผ์ธ๋ฒํธ๊ฐ flag.index - 1์ด๋๊น ๋ง์ง๋ง์ด ๋ง๋ค.
junselee /minishell
minishell-1.0 %% cat < test01.txt test01.txt # ์
๋ ฅ๋ฆฌ๋๋ ์
์์ฃผ๊ณ ๋ค์ ์ธ์๋ฅผ ์ค๋ค.
flag.heredoc : [-1] # ํ์ด๋
์ ์๋ค. ์์.
flag.rd_oput : [-1] # ์ถ๋ ฅ๋ฆฌ๋๋ ์
๋ ์๋ค. ์์.
flag.rd_iput : [1] # ์
๋ ฅ๋ฆฌ๋๋ ์
์ ๋ผ์ธ[1]์ด ๋ง์ง๋ง์ด๋ค.
flag.index(end) : [4] # ๋ฌธ์์ด์ ๋(NULL)์ ๋ผ์ธ[4]๋ค.
cmd_cmd_line[0] : [cat]
cmd_cmd_line[1] : [<] # ์
๋ ฅ๋ฆฌ๋๋ ์
์ด ์ค๊ณ .
cmd_cmd_line[2] : [test01.txt] # ๋ฐ์์์ผํ ํ์ผ์ด๋ฆ์ด์จ๋ค.
cmd_cmd_line[3] : [test01.txt] # ๊ทผ๋ฐ ๋์ ์ด์น๊ตฌ๋ค.
# ๋ ์๊ฐํด๋ณผ์ ์ ์ฐ์ ์์๋ ๋ค์์์ง๋ง ์์๊ฐ ์ ํจํ์ง ์์ผ๋ฉด ์๋ฌ.
# ๋ค๊ฐ ํ์ผ์ด๋ฆ์ด ์๋๊ณ ์ต์
์ด๋ฉด ์์ ์ต์
์ ๋ง๊ฒ ์คํํ๋ค.
junselee /minishell
๐ ๊ธฐ๋ฅ๊ตฌํ ์คํ 01
- ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก bashํ๊ฒฝ์ ์๋๋ฐฉ์์ ๋์ํ๋ก๊ทธ๋จ์ ํตํด ๋ชจ๋ฐฉํด๋ณด์. ์ ๋ ฅ์ ๋ํ ์ฐ์ ์์๋ถํฐ.
# bash๊ฒฝ์ฐ ๋ฆฌ๋๋ ์
์
๋ ฅ์ ๋จผ์ ๋ฐ๊ณ , ๊ทธ๋ค์ ํ์ด๋
์ผ๋ก ์ข
๋ฃ๋ฌธ์๋ฅผ ๋ฐ์ผ๋ฉด cat์ ํ์ด๋
์ ์ธ์๋ก ๋ฐ์์จ๋ค.
bash-3.2$ cat < tesxt << END # ๊ทผ๋ฐ ์
๋ ฅ๋ฆฌ๋๋ ์
์ ์๋ํ์ผ์ ์ค๋ณด์.
> aaaaaaaa # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
> bbbbbbbb # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
> cccccccc # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
> dddddddd # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
> END # ์ข
๋ฃ๋ฌธ์๋๊น ๊ทธ๋ง๋ฐ๋๋ค.
bash: tesxt: No such file or directory # ํ์ง๋ง ๊ฒฐ๊ณผ๋ ์ฒซ๋ฒ์งธ ์
๋ ฅ๋ฆฌ๋๋ ์
์ด ์ฌ๋ฐ๋ฅด์ง์์๊ธฐ๋๋ฌธ์ ๋ฌด์.
bash-3.2$
# minishell๋ก ํ๋ด๋ด๊ธฐ
junselee /minishell ./minishell
### #### ## ## ## ## ## ##### ## ## ####### #### ####
#### ## ## ### ### #### ## ## ## ## ## ## ## # ## ##
## ## ## ####### ## ## #### # ## ## ## # ## ##
## ## ### ####### ## ## ## ##### ####### #### ## ##
####### ## ## # ## ###### #### ## ## ## ## # ## # ## #
## ## ## ## ## ## ## ## ## ## ## ## ## ## # ## ## ## ##
## ###### ## ## ## ## ## ## ##### ## ## ####### ####### #######
minishell-1.0 %% cat < tesxt << END # ๊ฐ์์ธ์๋ฅผ ์ฃผ๊ณ
aaaaaaaaaa # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
bbbbbbbbbb # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
cccccccccc # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
dddddddddd # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
END # ์ข
๋ฃ๋ฌธ์๋๊น ๊ทธ๋ง๋ฐ๋๋ค.
minishell: tesxt: No such file or directory #์ฒซ๋ฒ์งธ ์
๋ ฅ๋ฆฌ๋๋ ์
์ด ์ฌ๋ฐ๋ฅด์ง์์๊ธฐ๋๋ฌธ์ ๋ฌด์.
# ๋ณด๋๊น ํ์ด๋ํ๋จผํธ ์
๋ ฅ์ "> "๋ฅผ ์ฃผ๊ณ ๋์ ์
๋ ฅ์ ๋ฐ๋๋ค ์์ ํ์.
minishell-1.0 %% cat < tesxt << END
> aaaa # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
> cccc # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
> dddd # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
> sssss # ํ์ด๋
์ ์
๋ ฅ๋ฐ๊ณ
> END # ์ข
๋ฃ๋ฌธ์๋๊น ๊ทธ๋ง๋ฐ๋๋ค.
minishell: tesxt: No such file or directory #์ฒซ๋ฒ์งธ ์
๋ ฅ๋ฆฌ๋๋ ์
์ด ์ฌ๋ฐ๋ฅด์ง์์๊ธฐ๋๋ฌธ์ ๋ฌด์.
๐ ๊ธฐ๋ฅ๊ตฌํ ์คํ 02
- ์ถ๋ ฅ์ ๋ํ ์ฐ์ ์์ ์ญ์ ๋ชจ๋ฐฉํด๋ณด์๋ค.
# bash ์ฒ๋ฆฌ๊ณผ์ .
bash-3.2$ cat aaaa.txt # aaaa.txt์๋ ํด๋น ๋ฌธ์์ด์ด ๋ค์ด์๊ณ ,
aaaaaa
aaaaaa
bash-3.2$ cat bbbb.txt # bbbb.txt์๋ ํด๋น ๋ฌธ์์ด์ด ๋ค์ด์๋ค.
bbb
bbbb
# cat์ผ๋ก ์
๋ ฅ์ ๋ฎ์ด์ฐ๊ธฐ๋ก aaaa.txt์๊ฒ ์ด์ด์ฐ๊ธฐ๋ก bbbb.txt์๊ฒ ๋๊ฒจ์ค๋ณด์
bash-3.2$ cat > aaaa.txt >> bbbb.txt
ccccccccc # cat์ ํ์ค์
๋ ฅ 1111
ddddddddd # cat์ ํ์ค์
๋ ฅ 2222
eeeeeeeee # cat์ ํ์ค์
๋ ฅ 3333
fffffffff # cat์ ํ์ค์
๋ ฅ 4444
# aaaa.txt๋ ๋ฎ์ด์ฐ๊ธฐ๋ก ์คํ๋์๊ณ , ํ์ค์
๋ ฅ์ bbbb.txt๋ก ๋์ด๊ฐ๊ธฐ๋๋ฌธ์ ์๋ฌด๋ด์ฉ์ด์๋ค.
bash-3.2$ cat aaaa.txt
# bbbb.txt๊ฐ ์ด์ด์ฐ๊ธฐ๋ก ์คํ๋์๊ณ , ์๋๋ค์ด์๋ ๋ด์ฉ๋ค์ cat์ ํ์ค์
๋ ฅ์ ๋๊ฒจ๋ฐ์๋ค.
bash-3.2$ cat bbbb.txt
bbb
bbbb
ccccccccc
ddddddddd
eeeeeeeee
fffffffff
bash-3.2$
# minishell๋ก ํ๋ด๋ด๊ธฐ
junselee /minishell ./minishell
### #### ## ## ## ## ## ##### ## ## ####### #### ####
#### ## ## ### ### #### ## ## ## ## ## ## ## # ## ##
## ## ## ####### ## ## #### # ## ## ## # ## ##
## ## ### ####### ## ## ## ##### ####### #### ## ##
####### ## ## # ## ###### #### ## ## ## ## # ## # ## #
## ## ## ## ## ## ## ## ## ## ## ## ## ## # ## ## ## ##
## ###### ## ## ## ## ## ## ##### ## ## ####### ####### #######
minishell-1.0 %% cat aaaa.txt # aaaa.txt์๋ ํด๋น ๋ฌธ์์ด์ด ๋ค์ด์๊ณ ,
aaaaaa
aaaaaa
minishell-1.0 %% cat bbbb.txt # bbbb.txt์๋ ํด๋น ๋ฌธ์์ด์ด ๋ค์ด์๋ค.
bbbbb
bbb
# cat์ผ๋ก ์
๋ ฅ์ ๋ฎ์ด์ฐ๊ธฐ๋ก aaaa.txt์๊ฒ ์ด์ด์ฐ๊ธฐ๋ก bbbb.txt์๊ฒ ๋๊ฒจ์ค๋ณด์
minishell-1.0 %% cat > aaaa.txt >> bbbb.txt
ccccccccccc # cat์ ํ์ค์
๋ ฅ 1111
ddddddddddd # cat์ ํ์ค์
๋ ฅ 2222
eeeeeeeeeee # cat์ ํ์ค์
๋ ฅ 3333
fffffffffff # cat์ ํ์ค์
๋ ฅ 4444
# aaaa.txt๋ ๋ฎ์ด์ฐ๊ธฐ๋ก ์คํ๋์๊ณ , ํ์ค์
๋ ฅ์ bbbb.txt๋ก ๋์ด๊ฐ๊ธฐ๋๋ฌธ์ ์๋ฌด๋ด์ฉ์ด์๋ค.
minishell-1.0 %% cat aaaa.txt
# bbbb.txt๊ฐ ์ด์ด์ฐ๊ธฐ๋ก ์คํ๋์๊ณ , ์๋๋ค์ด์๋ ๋ด์ฉ๋ค์ cat์ ํ์ค์
๋ ฅ์ ๋๊ฒจ๋ฐ์๋ค.
minishell-1.0 %% cat bbbb.txt
bbbbb
bbb
ccccccccccc
ddddddddddd
eeeeeeeeeee
fffffffffff
minishell-1.0 %%
'์ผ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
#005. ์ค๋ (0) | 2021.08.01 |
---|---|
#004. ์์์ ์ฅ (0) | 2021.07.31 |
#002. ์๋ฉ๋ฆฌ์นด๋ ธ (0) | 2021.07.30 |
#001. ์์์ด๋ฐ์ด๋ค (0) | 2021.07.29 |
#000. ๋ธ๋ก๊ทธ์์ (0) | 2021.07.28 |