Day04 - jeremy0405/Codesquad_CS GitHub Wiki

CS02

๊ณผ๊ฑฐ์— vmware์™€ ubuntu๋ฅผ ์‚ฌ์šฉํ•  ์ผ์ด ์žˆ์–ด์„œ ๋ฐ์ŠคํŠธํƒ‘์— ์„ค์น˜ํ•œ ์ ์ด ์žˆ๋‹ค. ๋งŽ์€ ์‹œํ–‰์ฐฉ์˜ค ๋์— ์ปดํ“จํ„ฐ์— ์„ค์น˜ํ–ˆ๋Š”๋ฐ ์ž˜๋ชป ์„ค์น˜ํ•œ๊ฑด์ง€ ์ปดํ“จํ„ฐ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋“ฏํ•œ ๊ธฐ๋ถ„ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚˜์ž๋งˆ์ž ํฌ๋ฉง์„ ํ•œ ์•…๋ชฝ์ด ์žˆ๋‹ค. ์ด๋Ÿฐ vmware๋ฅผ ๋‚˜์˜ ์†Œ์ค‘ํ•œ m1 ๋งฅ๋ถ์—๋Š” ๊ฐ€์ƒ๋จธ์‹ ์„ ์„ค์น˜ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜๋‹ค. ๋”ฐ๋ผ์„œ ์ดˆ๊ธฐ์— window pc์— vmware์™€ ubuntu๋ฅผ ์„ค์น˜ํ•˜๊ณ  macbook์—์„œ window PC์˜ vmware๋กœ ์ ‘์†ํ•˜๋Š” ์‹์œผ๋กœ ์ง„ํ–‰ํ• ๋ ค๊ณ  ํ–ˆ๋‹ค.

ubuntu ์ดˆ๊ธฐ ์„ธํŒ…์ด ๋๋‚ด๊ณ  vmware์˜ IP์ฃผ์†Œ๋กœ ์›๊ฒฉ์ ‘์†์„ ์‹œ๋„ํ–ˆ๋‹ค. ์œˆ๋„์šฐ์—์„œ๋Š” ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ–ˆ์ง€๋งŒ ๋งฅ์—์„œ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋‹ค. ๋ชจ๋‘์˜ ๋„คํŠธ์›Œํฌ ์ฑ…์„ ์ตœ๊ทผ์— ์ฝ์—ˆ์ง€๋งŒ ์ „ํ˜€ ๋‚ด ์ง€์‹์œผ๋กœ ๋งŒ๋“ค์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ง€๊ธˆ์€ ๋„คํŠธ์›Œํฌ ๋ธŒ๋ฆฟ์ง€ ์„ค์ •์„ ํ†ตํ•ด ๋งฅ์—์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค์—ˆ์ง€๋งŒ ์•„์ง๋„ ์™œ ์ด๋ ‡๊ฒŒ ๋˜๋Š”์ง€ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜์ง€๋Š” ๋ชปํ–ˆ๋‹ค.

๋Œ€์ถฉ ์ดํ•ดํ•œ ๊ฒƒ

  • ์šฐ๋ถ„ํˆฌ๋Š” ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ์ด๋‹ค. -> ๋งฅ์—์„œ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€. ์™œ? ๊ณต์ธ ์ฃผ์†Œ๊ฐ€ ์•„๋‹ˆ๋‹ˆ๊นŒ
  • ๋ธŒ๋ฆฟ์ง€ ์„ค์ • -> ๊ฐ™์€ ์ž‘์€ ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š”(๋ฐ์Šคํฌํƒ‘์˜ ๋žœ, ๋‚ด ๋งฅ๋ถ์˜ ๊ณต์œ ๊ธฐ) ๊ฒƒ์„ ํ˜ธ์ŠคํŠธ์™€ ๊ฒŒ์ŠคํŠธ๊ฐ€ ์„œ๋กœ ๋™๋“ฑํ•œ ์ž๊ฒฉ์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ ๊ฐ™์€ ํ™˜๊ฒฝ์— ์žˆ๊ฒŒ ๋จ.. -> ? ์ž˜ ๋ชจ๋ฅด๊ฒ ์Œ

๋ธŒ๋ฆฟ์ง€

์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ถ„๋ฆฌํ•ด์ฃผ๋Š” ๊ฒƒ Data Link Layer

๋ธŒ๋ฆฟ์ง€๋กœ ๋‚˜๋ˆ„์–ด์ง„ ์ฝœ๋ฆฌ์ „ ๋„๋ฉ”์ธ๋งˆ๋‹ค ์†ํ•ด ์žˆ๋Š” PC๋“ค๋ผ๋ฆฌ๋Š” ๊ฐ๊ฐ ํ†ต์‹ ์ด ๊ฐ€๋Šฅ -> ์ด๊ฑฐ ๋•Œ๋ฌธ์— ๋œ๋“ฏ?

ํ˜„์žฌ๋Š” ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•จ

ip

Internet Protocol : ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์žฅ์น˜๋“ค์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ถ€์—ฌ๋˜๋Š” ๊ณ ์œ ์˜ ๋ฒˆํ˜ธ(์ฃผ์†Œ)

IP๋ผ๊ณ  ํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ IPv4๋ฅผ ๋งํ•จ

๊ณ ์ • IP : ์ปดํ“จํ„ฐ์— ๊ณ ์ •์ ์œผ๋กœ ๋ถ€์—ฌ๋œ IP -> ๋ณด์•ˆ ์šฐ์ˆ˜ -> ๋ณด์•ˆ์ด ํ•„์š”ํ•œ ์—…์ฒด or ๊ธฐ๊ด€์—์„œ ์‚ฌ์šฉ

์œ ๋™ IP : ๋งค๋ฒˆ ๋ณ€ํ•˜๋Š” IP -> ์ผ๋ฐ˜์ 

๊ณต์ธ IP : ISP(Internet Service Provider)๊ฐ€ ๋ถ€์—ฌ๋ฐ›์€ IP

์‚ฌ์„ค IP : ๊ณต์œ ๊ธฐ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฐ€์ •์ด๋‚˜ ํšŒ์‚ฌ์˜ ๋„คํŠธ์›Œํฌ ๊ธฐ๊ธฐ๋“ค์ด ๊ณต์œ ๊ธฐ์— ์˜ํ•ด ํ• ๋‹น๋ฐ›๋Š” IP

์‚ฌ์„ค IP๋Š” ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

ํฌํŠธ ํฌ์›Œ๋”ฉ

์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” IP์ฃผ์†Œ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํ˜„์žฌ IPv4๋Š” 2^32 ๊นŒ์ง€ ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ํ˜„์žฌ ์ด ์ฒด๊ณ„๋กœ ๋ชจ๋“  IP๋ฅผ ํ• ๋‹นํ•˜๊ธฐ์—๋Š” ๋ถ€์กฑํ•จ์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ตณ์ด ์ „์„ธ๊ณ„์ ์ธ ๋„คํŠธ์›Œํฌ(WAN (?))๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์žฅ๋น„๋“ค์€ ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. 10.x.x.x, 172.16~31.x.x, 192.168.x.x ๋Œ€์—ญ์˜ IP๋“ค์€ ํšŒ์‚ฌ๋‚˜ ๊ฐœ์ธ์ด ๊ตฌ์ถ•ํ•˜๋Š” ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ์—๋งŒ ์ด์šฉ๋œ๋‹ค. ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” DHCP ์„œ๋ฒ„์™€ ๋ผ์šฐํ„ฐ ๋“ฑ์ด ํ•„์š”ํ•œ๋ฐ ์ด ๊ธฐ๋Šฅ์„ ๊ณต์œ ๊ธฐ๊ฐ€ ํ•ด์ค€๋‹ค.

๊ณต์œ ๊ธฐ์˜ ์—ญํ• ์€ ๊ณต์œ ๊ธฐ์— ์—ฐ๊ฒฐ๋˜๋Š” ๋ชจ๋“  ๊ธฐ๊ธฐ๋“ค์— ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์ถ•ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ๋ฅผ ํ• ๋‹น ๋ฐ›์€ ๊ธฐ๊ธฐ๋“ค์ด ์ธํ„ฐ๋„ท์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ณต์œ ๊ธฐ์— ๊ณต์ธ ์•„์ดํ”ผ๋ฅผ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜ ํ• ๋‹น๋˜์–ด ์žˆ์–ด์•ผ์ง€๋งŒ ์ „์„ธ๊ณ„์˜ ๋„คํŠธ์›Œํฌ์™€ ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‚ด vmware์—์„œ ํ™•์ธํ•œ IP ์ฃผ์†Œ๋Š” 192.168.?.? ๊ฒฐ๊ตญ ์‚ฌ์„ค ์•„์ดํ”ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ๋งฅ๋ถ์—์„œ ์•„๋ฌด๋ฆฌ ์ฐพ์•„๋ดค์ž ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.

์ปดํ“จํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ๋ฉ€๋ฆฌ ์žˆ๋Š” ์ปดํ“จํ„ฐ์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋งŒ์•ฝ ๋‹ค๋ฅธ ๋ฉ€๋ฆฌ์žˆ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ๋‚˜์˜ ์ปดํ“จํ„ฐ์— ์ ‘๊ทผ์„ํ• ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? ๋ถ„๋ช… ๊ณต์ธ ์•„์ดํ”ผ๋กœ ์ •๋ณด๋ฅผ ๋ณด๋‚ด์˜ฌ ๊ฒƒ์ธ๋ฐ ์ด ๊ฒƒ์„ ์–ด๋–ค ๊ธฐ๊ธฐ์— ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š”์ง€ ์ธ์ง€ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ด์ง„๋‹ค. ์ด ๊ณผ์ •์ด ํฌํŠธ ํฌ์›Œ๋”ฉ์ด๋‹ค. ๊ฒฐ๊ตญ ํฌํŠธ ํฌ์›Œ๋”ฉ์€ ๊ณต์ธ ์•„์ดํ”ผ๋กœ ๋ฐ›์€ ํฌํŠธ ๋ฒˆํ˜ธ ์—ฐ๊ฒฐ์„ ๊ณต์œ ๊ธฐ ์ž์ฒด์—์„œ ํ•ด์„œ ๋ฉ€๋ฆฌ ์žˆ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ๋‚˜์˜ ์ปดํ“จํ„ฐ์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ถœ์ฒ˜

chmod

sudo chmod777 /dev/ttyUSB0 sudo chmod666 /dev/ttyUSB1 ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ํ•™๊ต ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ ํ•ญ์ƒ ์„ค์ •ํ•ด์ฃผ์—ˆ๋˜ ๋ช…๋ น์–ด๋“ค์ด๋‹ค. ๊ทธ ๋‹น์‹œ์— ์ด ๋ช…๋ น์–ด๋ฅผ ๋งค๋ฒˆ ์น˜๋ฉฐ ์ด๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ณธ ๊ธฐ์–ต์ด ์žˆ๋‹ค. ์‹œ๊ฐ„์ด ์˜ค๋ž˜๋˜์„œ ๊ธฐ์–ต์ด ์ •ํ™•ํ•˜์ง€ ์•Š์•„ ๋‹ค์‹œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ํŒŒ์ผ ๋ฐ ๊ฐ ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•ด ์ฝ๊ธฐ(r), ์“ฐ๊ธฐ(w), ์‹คํ–‰(x)๊ถŒํ•œ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ํŒŒ์ผ์„ ์†Œ์œ ํ•œ ์‚ฌ์šฉ์ž, ํŠน์ • ๊ทธ๋ฃน, ๊ทธ ์™ธ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๊ฐ๊ฐ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

chmod ํŒŒ์ผ ๊ถŒํ•œ

์ถœ์ฒ˜

์ฝ๊ธฐ์— 4, ์“ฐ๊ธฐ์— 2, ์‹คํ–‰์— 1์„ ํ• ๋‹นํ•˜๋Š” 8์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ ํ•œ ์ž๋ฆฌ๋งˆ๋‹ค ํŒŒ์ผ ์†Œ์œ ์ž, ๊ทธ๋ฃน, ๊ทธ ์™ธ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค.

์‰˜ ์Šคํฌ๋ฆฝํŠธ

๋ณ€์ˆ˜

#! /bin/bash

VAR1="Hello"
VAR2="World"

STR="$VAR1 $VAR2"

echo "$STR"
Hello World

๋ฐ˜๋ณต๋ฌธ

#! /bin/bash

for i in 1 2 3 4 5
do
	echo i : $i
done
i : 1
i : 2
i : 3
i : 4
i : 5
#! /bin/bash

for i in `seq 1 1 16`
do
	echo day$i
done
day1
day2
...
day16

์กฐ๊ฑด์‹

[ ๊ฐ’ ์กฐ๊ฑด์‹ ๊ฐ’ ]

[ -z ${A} ] : A ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ด๋ฉด TRUE
[ -n ${A} ] : A ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด TRUE
[ ${A} -eq ${B} ] : A์™€ B๊ฐ’์ด ๊ฐ™์œผ๋ฉด TRUE
[ ${A} -ne ${B} ] : A์™€ B๊ฐ’์ด ๋‹ค๋ฅด๋ฉด TRUE
[ ${A} -gt ${B} ] : A๊ฐ€ B๋ณด๋‹ค ํฌ๋ฉด TRUE
[ ${A} -ge ${B} ] : A๊ฐ€ B๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด TRUE
[ ${A} -lt ${B} ] : A๊ฐ€ B๋ณด๋‹ค ์ž‘์œผ๋ฉด TRUE
[ ${A} -le ${B} ] : A๊ฐ€ B๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด TRUE

[ ์กฐ๊ฑด์‹A -a ์กฐ๊ฑด์‹B ] : ์กฐ๊ฑด์‹ A์™€ B๊ฐ€ ๋ชจ๋‘ TRUE์ด๋ฉด TRUE (&& ์™€ ๋™์ผ)
[ ์กฐ๊ฑด์‹A -o ์กฐ๊ฑด์‹B ] : ์กฐ๊ฑด์‹ A๊ฐ€ TRUE๊ฑฐ๋‚˜ ์กฐ๊ฑด์‹B๊ฐ€ TRUE๋ฉด TRUE (|| ์™€ ๋™์ผ)

ํŒŒ์ผ๊ด€๋ จ
[ -d ${A} ] : A ํŒŒ์ผ์ด ๋””๋ ‰ํ† ๋ฆฌ๋ฉด TRUE
[ -e ${A} ] : A ํŒŒ์ผ์ด(๋…ธ๋“œ, ๋””๋ ‰ํ† ๋ฆฌ, ์†Œ์ผ“ ๋“ฑ๋“ฑ ๋ชจ๋‘) ์กด์žฌํ•˜๋ฉด TRUE
[ -w ${A} ] : A ํŒŒ์ผ์ด ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•˜๋ฉด TRUE
[ -x ${A} ] : A ํŒŒ์ผ์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋ฉด TRUE
[ -f ${A} ] : A ํŒŒ์ผ์ด ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ regular ํŒŒ์ผ์ด๋ฉด TRUE
[ ${A} -ef ${B} ] : A ํŒŒ์ผ๊ณผ B ํŒŒ์ผ์ด ๊ฐ™์€ ํŒŒ์ผ์ด๋ฉด ์ฐธ

์ถœ์ฒ˜

if ๋ฌธ

if ! [ -d backup ]; then
	mkdir backup
fi

backup ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†๋‹ค๋ฉด backup ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ์Šคํฌ๋ฆฝํŠธ