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)
๊ถํ์ ๊ฐ๋ณ์ ์ผ๋ก ์ง์ ํ ์ ์๋ค. ์ด๋ ํ์ผ์ ์์ ํ ์ฌ์ฉ์, ํน์ ๊ทธ๋ฃน, ๊ทธ ์ธ ์ฌ์ฉ์์ ๋ํด ๊ฐ๊ฐ ์ค์ ์ด ๊ฐ๋ฅํ๋ค.
์ฝ๊ธฐ์ 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 ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋๋ ์คํฌ๋ฆฝํธ