๐ธ CLI : WSL ๋ฆฌ๋ ์ค์ฉ ์๋์ฐ์ฆ ํ์ ์์คํ ์ ์ฝ์.
๐ธ GUI(Graphical User Interface) :
๐ธ I/O(Input/Output) : "์์ด์ค", ์ปดํจํฐ๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ์
๋ ฅ๊ณผ ์ถ๋ ฅ
ํฐ๋ฏธ๋ = CLI
๐ธPrompt (ํ๋กฌํํธ) : ํฐ๋ฏธ๋ ์์์ ํค๋ณด๋์ ์ ๋ ฅ์ ํ์ธํ๊ณ ํธ์งํ ์ ์๋ ํ ์ค์ ๊ณต๊ฐ.
pwd
(print working directory) : ํ์ฌ ์์
์ค์ธ ํด๋์ ์์น ํ์ธ. directory๋ ํด๋.mkdir
(make directory) : mkdir ํด๋๋ช
. ์๋ก์ด ํด๋ ์์ฑํ๊ธฐ. (ํด๋ ๋๋ ํ์ผ ์ด๋ฆ์ ๊ณต๋ฐฑ(๋์ด์ฐ๊ธฐ)๋ ํน์๋ฌธ์๊ฐ ์์ผ๋ฉด. ๋ฐฑ์ฌ๋์(\
)๋ฅผ ์ด์ฉํด ์ ์ฉ.ls
(list) : ํน์ ํด๋์ ํฌํจ๋ ํ์ผ์ด๋ ํ์ ํด๋์ ๋ฆฌ์คํธ ์ถ๋ ฅ.ls -l
: ํด๋๋ ํ์ผ์ ํฌ๋งท์ ์ ๋ถ ํํํ๋ผ๋ ์๋ฏธ. drwxr-xr-x
: ํด๋๋ฅผ ๋ํ๋. ์ง์
๊ฐ๋ฅ.-rw-r--r--
: ํ์ผ์ ๋ํ๋. ์ง์
๋ถ๊ฐ๋ฅ.ls -a
: 'all'์ด๋ผ๋ ์๋ฏธ๋ก ์จ์ด์๋ ํด๋๋ ํ์ผ์ ํฌํจํ ๋ชจ๋ ํญ๋ชฉ์ ํฐ๋ฏธ๋์ ์ถ๋ ฅ.ls -al
๋๋ ls -la
: (์ต์
์ ๋ปํ๋ ๋์(dash, -
) ๋ค์ ์ค๋ ์ต์
์ ์์๋ ๊ธฐ๋ฅ์ ์ํฅ์ ๋ฏธ์น์ง ์์)explorer.exe .
: ํฐ๋ฏธ๋์ ํ์ฌ ์์น๋ฅผ GUI์ ํ์๊ธฐ๋ก ์ด๊ธฐcd
(change directory) : cd ํด๋๋ช
ํ๋กฌํฌํธ๋ก ์ํธ์์ฉํ๋ ํด๋๋ฅผ ๋ค๋ฅธ ํด๋๋ก ๋ณ๊ฒฝ. cd
๋ค์ ๊ฒฝ๋ก๋ฅผ ์
๋ ฅํ๋ฉด ํ๋ฒ์ ์ด๋์ด ๊ฐ๋ฅ. (cd ~/hellpWorld/hello
). touch
: touch ํ์ผ๋ช
.ํ์ฅ์
. ํ์ผ ๋ง๋ค๊ธฐ. (ex. touch code.txt
ํ
์คํธ ํ์ผ ์์ฑ)cat
: cat ํ์ผ๋ช
. ํ์ผ์ ๋ด์ฉ์ ํฐ๋ฏธ๋์ ์ถ๋ ฅํ๊ธฐ. ํ์ผ๋ช
์ ์์๋๋ก ์
๋ ฅํ๋ฉด ํ์ผ์ ๋ด์ฉ์ ์์๋๋ก ๋ณด์ฌ์ค.cat
์ ํตํด ํฐ๋ฏธ๋์ ์ถ๋ ฅํ๋ฉด, ํ์ผ์ ๋ชจ๋ ๋ด์ฉ์ ์ถ๋ ฅํจ. ์๊ฒฉ ์๋ฒ์ ์ ์ํ๋ ์ผ์ ๋คํธ์ํฌ๋ฅผ ํตํด ์ด๋ค์ง๊ธฐ ๋๋ฌธ์, ์๊ฒฉ์ผ๋ก ์ ์ํ ์ํ์์ ํฐ ํ์ผ์ ์ถ๋ ฅํ๋ ์ผ์ ๊ต์ฅํ ๋นํจ์จ์ .rm
(remove) : ํด๋๋ ํ์ผ ์ญ์ . rm ํ์ผ๋ช
๋จ์ผ ํ์ผ์ญ์ .rm -r ํด๋๋ช
(recursive) : ํด๋๋ฅผ ์ง์ธ ๋ ์ฌ์ฉrm -f
(force) : ์ง๋ฌธ์ ๋ฐ์ง ์๊ณ ์ง์ธ ๋ ์ฌ์ฉ rm -rf ํด๋๋ช
mv
(move) : [mv ํด๋๋_ํ์ผ์ด๋ฆ] [๋์ฐฉ_ํด๋๋ช
]
ํด๋๋ ํ์ผ์ ์์น ์ฎ๊ธฐ๊ธฐ. // ๋๋, ํด๋๋ ํ์ผ์ ์ด๋ฆ์ ๋ณ๊ฒฝ. mv ํ์ฌ_ํด๋๋_ํ์ผ์ด๋ฆ ๋ฐ๋_์ด๋ฆ
์ปดํจํฐ๊ฐ ํ์ผ์ ์ฎ๊ธฐ๋ ๋ฐฉ๋ฒ
a. ํ์ผ์ ๋ด์ฉ์ ์ ์ ์ ์ฅ.
b. ์๋ ์์น์ ํ์ผ์ ์ญ์ . (ํ์ผ์ ๋ณต์ฌํ๋ ๊ฒฝ์ฐ ์ด ๋ถ๋ถ์ ์ ์ธ๋จ)
c. ๋์ฐฉ ํด๋์ a.์์ ์ ์ฅํ ๋ด์ฉ์ผ๋ก ์๋ก์ด ํ์ผ์ ์์ฑ.
cp
(copy) : cp [์๋ณธ ํ์ผ ์ด๋ฆ] [๋ณต์ฌํ ํ์ผ ์ด๋ฆ]
ํ์ผ ๋ณต์ฌ. .
์ ํ์ฌ ํ์ํด๋๋ฅผ ๋ํ๋. ..
์ ํ์ฌ ํด๋ (.
)๋ฅผ ๊ธฐ์ค์ผ๋ก, ์์ .
์ด ํ๋ ๋ ๋ถ์ผ๋ฉฐ, ์ด๋ ๊ฒ ๋ง๋ค์ด์ง ..
์ ํ์ฌ ํด๋๋ณด๋ค ์์ ์๋ ํด๋๋ฅผ ๊ฐ๋ฆฌํด.cp -rf [์๋ณธ ํด๋ ์ด๋ฆ] [๋ณต์ฌํ ํด๋ ์ด๋ฆ]
: ํด๋ ๋ณต์ฌ.
- ์ฌ์ฉ์ : ๋ฐํํ๋ฉด์ ์ง์ ํ๊ธฐ ์ํด ๋ก๊ทธ์ธํ๋ ๊ณ์ .
- ๊ด๋ฆฌ์ : ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋ ์์ญ์ ์ ๊ทผํ ์ ์๋ ๋์ ๊ถํ์ ๊ฐ์ง.
- MS(MicroSoft)์ฌ์์ ๊ฐ๋ฐํ ์ด์์ฒด์ ์ธ ์๋์ฐ์ ์ด๊ธฐ ๋ฒ์ ์๋ ์ฌ์ฉ์๊ฐ ์์ด ํญ์ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ค์น, ๋ณ๊ฒฝ, ์ญ์ ํ ์ ์์์.
- ์ด ๋๋ฌธ์ ๊ฐ๋ฐ์ ๋ํ ์ง์์ด ์๋ ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์ ๋ณด๋ฅผ ํ์ทจ๋นํ๋ ์ผ์ด ๋ฐ์ํจ (hacking). ๊ณต๊ฒฉ์๊ฐ ์ ์ฑ์ฝ๋๋ฅผ ํ๋ก๊ทธ๋จ์ ์ฝ์ ํ๊ณ ์ฌ์ฉ์๊ฐ ์ด ํ๋ก๊ทธ๋จ์ ์ค์นํ ๊ฒฝ์ฐ ๋ฐ์.
๋ธ๋ฃจ ์คํฌ๋ฆฐ
- ๋ ์ด์์ ํ๋ก๊ทธ๋จ์ด ์์คํ (์ด์์ฒด์ )์ ์ค์ ๋ณ๊ฒฝ์ ์ฐธ์ฌํ๋ ๊ณผ์ ์์, ๊ธฐ์กด์ ์ค์ ์์๋ง ๋์ํ๋๋ก ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ์ด ๊ฐ์ ๋ก ์ข ๋ฃ๋๋ ์ผ์ด ๋ฐ์ํจ.
- ์ด๋ ๊ฒ ๋ ํ๋ก๊ทธ๋จ์ด ํ๋์ ์์คํ (์ด์์ฒด์ )์ ๋๊ณ ๋คํฌ๋ ๊ณผ์ ์ ํ๋ก๊ทธ๋จ ์ถฉ๋(Conflict)์ด๋ผ๊ณ ํจ.
- ์ด๋ก ์ธํด ์ปดํจํฐ๊ฐ ํ๋ฉด์ ๋ธ๋ฃจ ์คํฌ๋ฆฐ์ ์ถ๋ ฅํจ.
๐ธ ์ด๋ ๊ฒ ์
์ฑ์ฝ๋์ ํ๋ก๊ทธ๋จ์ ์ถฉ๋๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ๋ฐฐ์ ํ๊ธฐ ์ํด, MS์ฌ๋ ์๋์ฐ Vista์ ์ฌ์ฉ์ ๊ณ์ ์ปจํธ๋กค์ ํ์ฌํจ.
๐ธ ์ฌ์ฉ์ ๊ณ์ ์ปจํธ๋กค(UAC, User Account Control) : ์์คํ
์ ๊ด๋ฆฌํ๋ ๊ด๋ฆฌ์์, ์ผ์์ ์ผ๋ก PC๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ฅผ ๊ตฌ๋ถ. ์ฌ์ฉ์๊ฐ ๋ชจ๋ฅด๋ ์ฌ์ด์ ์์คํ
์ค์ ์ ๋ณ๊ฒฝํ๋ ์
์ฑ์ฝ๋๊ฐ ์คํ๋ ๋, ์ ๊ทผ ๊ถํ์ ๋ง์ ์ฌ์ฉ์๋ฅผ ๋ณดํธ.
๊ด๋ฆฌ์๋ ํ๋ก๊ทธ๋จ์ ์ค์นํ๊ฑฐ๋ ๋ณ๊ฒฝ ๋๋ ์ญ์ ํ๋ ๊ถํ์ ๊ฐ์ง๊ณ ์๊ณ , ์ฌ์ฉ์๋ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์์ง๋ง, ๋ณ๊ฒฝํ ์ ์๋๋ก ์ ํ๋ ๊ถํ์ ๊ฐ์ง.
๐ธ ์ ๋ ๊ฒฝ๋ก : ๊ธฐ์ค์ (๋ฃจํธ ํด๋; /
)์ผ๋ก๋ถํฐ์ ์ ๋์ ์ธ ์์น๋ฅผ ๋ํ๋. ์ฆ, ํน์ ํด๋๋ ํ์ผ์ด ๋ฃจํธ ํด๋๋ก๋ถํฐ ์ด๋ค ํด๋๋ก ์ง์
ํ๋ ๊ฒฝ์ฐ ๋ง๋ ์ ์๋์ง ๋ํ๋.
๐ธ ์๋ ๊ฒฝ๋ก : ํน์ ํด๋ ๋๋ ํ์ผ ์์น๋ฅผ ํ์ฌ ์์น๋ฅผ ๊ธฐ์ค์ ์ผ๋ก ๋ํ๋. ํ์ฌ ์์นํ ํด๋๋ ์ (.
)์ผ๋ก ํํํ๊ณ , ์์ ํด๋๋ ๋ ๊ฐ์ ์ (..
)์ผ๋ก ํํ.
๐ก ์ฃผ์ ! ๊ด๋ฆฌ์ ์์ญ์ ์ค์๋ก ๋ณ๊ฒฝํ๋ฉด, ์ด์์ฒด์ (Operating System)๊ฐ ๋จนํต์ด ๋ ์ ์์. ์ด์์ฒด์ ๊ฐ ๋ง๊ฐ์ง๋ฉด, ์ด์์ฒด์ ๋ฅผ ์ฌ์ค์นํด์ผ ํ ์ ์์ ๐ก
๐ธ ๋ฃจํธ ํด๋(/
)๋ Linux์ ๊ด๋ฆฌ์ ์์ญ์ผ๋ก, ์ผ๋ฐ ์ฌ์ฉ์์ ๊ถํ์ผ๋ก๋ ์ด๋ค ํด๋๋ ํ์ผ๋ ์์ฑ, ๋ณ๊ฒฝ, ์ญ์ ํ ์ ์์.
๋ฃจํธํด๋๋ก ์ด๋ํ์ฌ ๋ช ๋ น์ด
mkdir
์ ์ด์ฉํด ํด๋ test๋ฅผ ์์ฑํ๋ฉด, "Read-only file system"์ด๋ผ๋ ์๋ฌ๊ฐ ๋ธ. ์ฝ๊ธฐ ์ ์ฉ(Read-only)์ด๋ผ๋ ๋ง์, ํด๋๋ ํ์ผ์ ์์ฑ, ๋ณ๊ฒฝ ๋๋ ์ญ์ ํ ์ ์๋ค๋ ์๋ฏธ.
๐ธ whoami
: ํ์ฌ ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์๋ฅผ ํ์ธํ๋ ๋ช
๋ น์ด.
๐ธ ์ฌ์ฉ์ ๊ถํ์ [username] ํด๋ ๋ด์์๋ง ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์. [username]์ ๋ง๊ฒ ํด๋๋ฅผ ์์ฑํ์ฌ ํด๋น ํด๋ ๋ด์์ ๊ถํ์ ์ฌ์ฉํ๋๋ก ์ ํ. ๋ฐ๋ฉด์ ๊ด๋ฆฌ์ ๊ถํ์ ์ด์ฉํ๋ฉด, ๋ค๋ฅธ ์ฌ์ฉ์ ํด๋์๋ ์ํฅ์ ๋ผ์น ์ ์์.
๐ธ ์ฌ์ฉ์ ํด๋์ ๊ฒฝ๋ก(Path)๋ ~/
๋ก ํ์๋จ. ๋ฌผ๊ฒฐ ๊ธฐํธ(~
)๋ ๋ฃจํธํด๋(/
)๋ก๋ถํฐ ์ฌ์ฉ์ ํด๋(username)๊น์ง์ ๊ฒฝ๋ก๋ฅผ ์ถ์ฝํ ํํ์
๋๋ค.
๐ธ ์ฌ์ฉ์๊ฐ ์๋ก์ด ํ๋ก๊ทธ๋จ์ ์ค์นํ๊ฑฐ๋ ๋ณ๊ฒฝ ๋๋ ์ญ์ ํ ๋์๋, ๊ด๋ฆฌ์ ๊ถํ์ด ํ์.
๐ธ sudo
: ์ฌ์ฉ์ ํ๊ฒฝ์์, ๊ด๋ฆฌ์ ๊ถํ์ ํ๋ํ๋ ๋ช
๋ น์ด.
sudo
๋ฅผ ํตํด ํด๋๋ฅผ ์์ฑํ ๊ฒฝ์ฐ ์์ฑํ ํด๋์ ์์ ์๋ ๋ฃจํธ์.ls -l
์ ํตํด ํน์ ํด๋๋ ํ์ผ์ด ์ฌ์ฉ์ ๋๋ ๊ด๋ฆฌ์์ ์์ ๋ก ์์ฑ๋์๋์ง ํ์ธํ ์ ์์.
- CLI์์ ํ๊ฒฝ์์ ์ ๋ช ํ ์๋ํฐ๋ vim(vi), emacs ๋ฑ์ด ์์. ์ด๋ค์ ์๋ํฐ ์ฌ์ฉ์ ์ํด ํ์ต์ ๋ฐ๋ก ํด์ผํ ์ ๋๋ก ์ง์ ์ฅ๋ฒฝ์ด ๋์. (vim์ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ)
- ์๋ํฐ ์ค ๊ฐ์ฅ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ์๋ํฐ๋ nano ์๋ํฐ์.
๐ธ nano
: nano ์คํ
ํ์ผ์ nano ์๋ํฐ๋ฅผ ์ด์ฉํด ์ฐ ํ๋ฉด.
- A : ํ์ผ ์ด๋ฆ
- B : ํ์ผ ํธ์ง ํ๋ฉด
- C : ์ฌ์ฉ์ ํ์ํ ๊ฐ์ข ๋จ์ถํค.
- ํ๋ฉด์ ํ์๋
^X
์ ๊ฐ์ ๋ด์ฉ์ ctrl+x ํค ์กฐํฉ์ ์๋ฏธํจ
๐ธ ^T
: ํ์ดํ ํค๋ฅผ ์ด์ฉํด ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ๋ฅผ ํ์ํ ํ ๋ถ๋ฌ์ด.
๐ธ nano [ํ์ผ๋ช
or .]
: ํ์ผ ํน์ ํด๋น ํด๋๋ฅผ nano์์ ์ผ.
๐ธ ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ์ด ์กด์ฌํ๋ฉด, ์ข
๋ฃ ์ ์ ์ฅํ ์ง ๋ฌผ์ด๋ด.
๐ธ ^X
: Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?
๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ๋จ๋ฉฐ Y
์ N
ํค๋ฅผ ํตํด ์ ์ฅ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์์.
๐ธ ^O
: nano๋ฅผ ์ข
๋ฃํ์ง ์๊ณ ํ์ผ ์ ์ฅ.
๐ธ ์ฐ๋ถํฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก apt๋ผ๋ ํจํค์ง ๋งค๋์ ๊ฐ ๋ด์ฅ๋์ด ์์.
๐ธ apt
: ํ๋ฉด์ ์๋์ ๊ฐ์ ๋ฉ์์ง๋ฅผ ํฐ๋ฏธ๋์ ์ถ๋ ฅ.
๐ธ apt update
(๊ด๋ฆฌ์ ๊ถํ ํ์) : ํจํค์ง ๋ชฉ๋ก ๊ฐฑ์ .
๐ธ apt list -โupgradable
: ์
๊ทธ๋ ์ด๋ ๊ฐ๋ฅํ ํจํค์ง ๋ชฉ๋ก์ ์ถ๋ ฅ.
๐ธ apt upgrade
(๊ด๋ฆฌ์ ๊ถํ ํ์) : ์ ์ฒด ํจํค์ง ์
๊ทธ๋ ์ด๋(๋ฒ์ ์
)
๐ธ apt --only-upgrade install ํจํค์ง ์ด๋ฆ
(๊ด๋ฆฌ์ ๊ถํ ํ์) : ํน์ ํจํค์ง๋ง ์
๊ทธ๋ ์ด๋(๋ฒ์ ์
)
๐ธ apt install ํจํค์ง ์ด๋ฆ
(๊ด๋ฆฌ์ ๊ถํ ํ์) : ํจํค์ง ์ค์น
๐ธ apt list --installed
: ์ค์น๋ ํจํค์ง ๋ณด๊ธฐ
๐ธ apt search ๊ฒ์์ด
: ํจํค์ง ๊ฒ์
๐ธ apt show ํจํค์ง ์ด๋ฆ
: ํจํค์ง ์ ๋ณด ํ์ธ
๐ธ apt remove ํจํค์ง ์ด๋ฆ
(๊ด๋ฆฌ์ ๊ถํ ํ์) : ํจํค์ง ์ญ์
๐ธ ํจํค์ง ์ค์น/์ญ์ ๋ฑ์ ์์
์ ์งํํ ๋ ๊ด๋ฆฌ์ ๊ถํ์ ํ๋ํด์ผ ํจ. ๊ด๋ฆฌ์๊ฐ ์๋๋ฐ, ์ค์น ๋ช
๋ น์ ์คํํ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๋ฅผ ๋์.
๐ธ ๋ฐ๋ผ์ ๋ช
๋ น์ด ์์ sudo
๋ฅผ ๋ถ์ฌ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด์ผํจ.
// wget์ด๋ผ๋ ํจํค์ง๋ฅผ ์ค์นํ ๊ฒฝ์ฐ,
sudo apt install wget
๐ธ ์ดํ, ๊ด๋ฆฌ์ ์ํธ ์
๋ ฅ ํ ์ค์น๋ฅผ ๊ณ์ํ ์ ์์.
๐ธ ctrl + C
: ์์
์ ์ทจ์ํ๊ณ , ํฐ๋ฏธ๋ ์ฌ์ฉ์ ์
๋ ฅ์ ๋ค์ ๋์ฐพ์์ด. (๊ฐ์ ์ข
๋ฃ)
๐ธ ctrl + shift + c
: ๋ณต์ฌ
๐ธ ctrl + shift + v
: ๋ถ์ฌ๋ฃ๊ธฐ
๐ธ wget
: URL์ ํตํด ํ์ผ์ ๋ค์ด๋ก๋ํ๋ ํ๋ก๊ทธ๋จ.
๐ธ Node.js : JavaScript ๋ฐํ์(runtime) ์ค ํ๋.
๐ธ nvm(Node Version Manager) : Node.js์ ๋ค์ํ ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋จ. (โ ๏ธ ์๋์ฐ ํ๊ฒฝ์์๋ nvm์ ์ฌ์ฉํ ์ ์์)
๐ธ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ์ ์ค์น
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
๐ธ ๋ง์ฝ Command 'wget' not found
๋ฉ์์ง์ ํจ๊ป ์ค์น๊ฐ ์งํ๋์ง ์๋ ๊ฒฝ์ฐ, Package Manager๋ฅผ ์ด์ฉํด wget
์ ์ค์นํด์ผ ํจ.
# Ubuntu
sudo apt update
sudo apt install wget
๐ธ ์ค์น ์๋ฃ ํ, ํฐ๋ฏธ๋์ ๋ค์ ์์.
๐ธ nvm --version
: nvm ๋ฒ์ ํ์ธ.
๐ธ nvm install --lts
: LTS(Long-Term Support) ๋ฒ์ Node.js ์ค์น. (Node.js์์ LTS๋ ์ง์ํ๋ ๊ธฐ๊ฐ์ด ๊ธธ๋ค๋ ์๋ฏธ)
๐ธ node -v
: Node.js ๋ฒ์ ํ์ธ
# helloWorld.js๋ผ๋ ์ด๋ฆ์ ํ์ผ์ ํ
์คํธ ์๋ํฐ nano๋ก ์ผ
nano helloWorld.js
// ์๋์ ๋ด์ฉ์ ํ์ผ์ ์
๋ ฅ.
function helloWorld () {
console.log("Hello world!");
}
helloWorld();
^X
๋ฅผ ๋๋ฌ ํธ์ง์ ์ข
๋ฃy
๋ฅผ ๋๋ฅด๊ณ ์ํฐํค๋ฅผ ๋๋ฌ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฅ.# helloWorld.js ํ์ผ์ node ํ๊ฒฝ์์ ์คํ.
node helloWorld.js
๐ธ node [ํ์ผ๋ช
]
: ํ์ผ์ node ํ๊ฒฝ์์ ์คํ.
- Node.js๋ ๋ค์ํ ๋ฒ์ ์ด ์กด์ฌํจ.
- ์๋ฅผ ๋ค์ด node 12.18.3 ๋ฒ์ ์์ ์ง ์ฝ๋๊ฐ ์ ๋์ํ๋๋ฐ, Node.js 14.15.5 ๋ฒ์ ์์๋ ์๋ฌ๊ฐ ์๊ธฐ๋ ๊ฒฝ์ฐ๊ฐ ์์.
- ๊ณผ๊ฑฐ์ ์์ฑํ ์ฝ๋๊ฐ ์ ์์ ์ธ์ง ํ์ธํ๊ธฐ ์ํด Node.js 12.18.3 ๋ฒ์ ์ด ํ์ํจ.
- ์ด์ (๊ณผ๊ฑฐ) ๋ฒ์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์ค, ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ์ค์น๋ Node.js๋ฅผ ์ง์ฐ๊ณ ๋ค์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ด ์์.
- ํ์ง๋ง ๋ฒ์ ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ๋ง๋ค ์ญ์ ํ ํด๋น ๋ฒ์ ์ ์ค์นํด์ผ ํ๋ค๋ฉด, ์ค์ ์์ ํ๋ ํ๊ฒฝ์์ ์ฝ๋์ ์ง์คํ์ง ๋ชปํด ์์ฐ์ฑ์ด ๋จ์ด์ง.
- ์ด๋ฌํ ๋ฌธ์ ๋ฅผ NVM์ด ํด๊ฒฐํด ์ค.
๐ธ nvm ls
: nvm์ ํตํด ์ค์นํ Node.js version๋ค์ด ๋์ด.
๐ธ nvm install 12.18.3
: ํน์ ๋ฒ์ ์ Node.js ์ค์น. ์ด๋ ๊ฒ ํ๋ฉด ์ด๋ฏธ ์ค์น๋ ๋ฒ์ ์ ์ญ์ ํ์ง ์๊ณ , ์ํ๋ ๋ฒ์ ์ ์ค์นํ ์ ์์.
๐ธ nvm use ๋ฒ์ ๋๋ฒ
: ์ฌ์ฉ ์ค์ธ Node.js version์ ๋ค๋ฅธ ๋ฒ์ ์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋ ์ฌ์ฉ.
๐ธ npm init
: ์๋ก์ด package.json ํ์ผ์ ์์ฑ.
๐ธ package.json ํ์ผ์ ๋ค์ด๊ฐ ์ ๋ณด๋ฅผ ์ฐจ๋ก๋๋ก ์
๋ ฅ. ์ ๋ณด๋ฅผ ์
๋ ฅํ ํ enterํค๋ฅผ ๋๋ฅด๋ฉด ๋ค์ ์ ๋ณด๋ฅผ ์
๋ ฅํ ์ ์์.
๐ธ ์
๋ ฅํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์์ฑ๋จ. ์๊ดํธ์ ๋ค์ด์๋ ๊ฐ์ด ๊ธฐ๋ณธ๊ฐ.
๐ธ npm init -y
: ์ ๊ณผ์ ์ ๋ชจ๋ ์๋ตํ๋ฉด์ package.json์ ์์ฑ.
๐ธ ํ๋์ ํ๋ก๊ทธ๋จ์ ๋ค์ํ ๋ชจ๋์ด ํฉ์ณ์ ธ์ ๋ง๋ค์ด์ง๋๋ฐ, ๊ฐ๋ฐ์ ํ ๋ ๋ชจ๋ ๊ฒ์ ๋ค ๋ง๋ค์ด์ ์ฐ์ง๋ ์์.
๐ธ node.js์์ ๋จ์ด ๋ง๋ค์ด๋์ ๋ชจ๋์ npm ๋ชจ๋์ด๋ผ๊ณ ๋ถ๋ฆ.
๐ธ node.js ํ๊ฒฝ์์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํ๊ธฐ ์ํด ๋ค์ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ์ง๋ง, ๊ทธ์ค ๋ํ์ ์ธ ๊ฒ์ ๋ฐ๋ก npm.
๐ธ npm(Node Package Manager) ์ ์ผ์ข
์ ์ฑ์คํ ์ด๋ก ํ์ํ ๋ชจ๋์ ๋ค์ด๋ก๋ํ ์ ์๋, ๋ชจ๋๋ค์ด ๋ชจ์ฌ์๋ ๋ชจ๋ ์คํ ์ด. (Linux์ ํจํค์ง ๋งค๋์ ๋ apt, macOS์ ํจํค์ง ๋งค๋์ ๋ brew)
๐ธ ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์๋ ๊ณณ์ด package.json์. ์ฆ, ํ๋ก์ ํธ(ํจํค์ง) ์ ๋ฐ์ ๊ดํ ์ ๋ณด๊ฐ ๋ค์ด์์.
file: package.json
{ "name": "modern-javascript-koans", // ํ๋ก์ ํธ์ ๊ดํ ์ ๋ณด "version": "1.0.0", // ํ๋ก์ ํธ์ ๊ดํ ์ ๋ณด "description": "", // ํ๋ก์ ํธ์ ๊ดํ ์ ๋ณด "main": "index.js", "scripts": { // CLI์์ ์ฌ์ฉ๊ฐ๋ฅํ ๋ช ๋ น "test": "mocha modern-js-koans/*.js --sort", "report": "mocha modern-js-koans/*.js --sort --reporter @mochajs/json-file-reporter", "submit": "codestates-submission" }, "keywords": [], "author": "codesatates", "dependencies": { // ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ dependency๋ค "@codestates-cc/submission-npm": "^1.1.1" }, "devDependencies": { "@mochajs/json-file-reporter": "^1.2.1", "chai": "^4.2.0", "mocha": "^8.2.0", "sinon": "^9.0.3" } }
๐ธ ์ค์ ๋ชจ๋์ ๋ฐ๋ก node_modules์ด๋ผ๋ ๋๋ ํ ๋ฆฌ์ ์ ์ฅ๋์ด ์์.
๐ธ ๊ฐ๋ฐ์ด๋ ์คํ์ ํด๋น ๋ชจ๋์ "์์กด"ํ๋ค๊ณ ํด์, "์์กด์ฑ(dependency)"์ด๋ผ๊ณ ๋ถ๋ฆ.
๐ธ devDependencies : ํด๋น ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๋ ํ๊ฒฝ์์ ํ์ํ ๋ชจ๋๋ค์ด ๋ช
์๋จ. ์ฆ, ํ๋ก๊ทธ๋จ ์คํ๊ณผ ๊ด๊ณ์๋ ์ค๋ก์ง ๊ฐ๋ฐ์ ์ํด ํ์ํ ๋ชจ๋๋ค. JSON ํ์์์, ํค์ ์ ํ ๊ฒ์ด ๋ชจ๋ ์ด๋ฆ, ๊ฐ์ด ๋ฒ์ .
๐ธ dependencies : devDependencies์๋ ๋ค๋ฅด๊ฒ, ์ด ํ๋ก์ ํธ๊ฐ ๋์๊ฐ๊ธฐ ์ํด ๋ฐ๋์ ํ์ํ ๋ชจ๋๋ค์ด ๋ฌด์์ธ์ง ๋ช
์๋จ.
๐ธ npm install
: package.json์์ ํ์ํ๋ค๊ณ ํ๋ ๋ชจ๋์ ๋ค์ด๋ก๋ํจ. ์ดํ node_modules ๋๋ ํ ๋ฆฌ๊ฐ ์๊ธด ๊ฑธ ํ์ธํ ์ ์์.
--save-dev
์ต์
๊ณผ ํจ๊ป ์ค์นํ๋ฉด, ์๋์ผ๋ก devDependencies์ ์ถ๊ฐ๋จ. --save
์ต์
๊ณผ ํจ๊ป ์ค์นํ๋ฉด, ์๋์ผ๋ก dependencies์ ์ถ๊ฐ๋จ (์๋ต๊ฐ๋ฅ).// ์๋ฅผ ๋ค์ด, mocha๋ผ๋ ๋ชจ๋์ devDependencies์ ์ถ๊ฐํ๋ฉด์ ์ค์นํ๊ณ ์ถ์ผ๋ฉด,
npm insatll mocha --save-dev
npm install
์ package.json์ ์๋ dependency (์์กด์ฑ ๋ชจ๋)๋ฅผ ๋ฐํ์ผ๋ก ์ค์น.- ๋ง์ผ dependency ์ ๋ณด๋ฅผ ์ ์ง ์์๋ค๊ณ ๊ฐ์ ํด๋ณด๋ฉด, ์ฝ๋์์๋ ํด๋น ๋ชจ๋์ ์ฐ๊ณ ์์ง๋ง, ๋ฌด์์ ์ค์นํด์ผ ์ด ํ๋ก๊ทธ๋จ์ด ์๋๋๋์ง, ๋ฌด์์ ์ค์นํด์ผ ์ด ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์์์ง ์ ์ ์์.
๐ธ CLI์์ ์ฌ์ฉ๊ฐ๋ฅํ ๋ช
๋ น (npm script)
๐ธ ์คํ ๋ฐฉ๋ฒ : npm run <์คํฌ๋ฆฝํธ ์ด๋ฆ>
๐ธ ๊ฐ๋ฐ์์ ์ฝ๋๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด์ ๊ฐ๋ฐ๋ โ๋ถ์ฐํ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
โ. ์์ค ์ฝ๋ ๊ธฐ๋ก์ ๊ด๋ฆฌํ๊ณ ์ถ์ ํ ์ ์๋ ๋ฒ์ ์ ๊ด๋ฆฌํ ์ ์์.
๐ธ Github : Git Repository๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์๋น์ค.
๐ธ ์คํ ์์ค (์์ค ์ฝ๋๊ฐ ๊ณต๊ฐ๋ ์ํํธ์จ์ด) : ๋๊ตฌ๋ ์์ ๋กญ๊ฒ ํด๋น ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ๊ฐ์ ๊ฐ๋ฅ. ์ด ์์
์ ๊ธฐ์ฌํ๋ค(contribute)๋ผ๊ณ ํจ.
๐ธ Remote Repository : ์๊ฒฉ ์จ๋ผ์ธ ์๋ฒ ์์ ์ ์ฅ์ ์ฌ๋ฌ ์ฌ๋์ด ํจ๊ป ๊ณต์ ๊ฐ๋ฅ.
๐ธ Local Repository : ๋ด ์ปดํจํฐ์ ์ ์ฅ์, ๋ด ๊ฐ์ธ ์ ์ฉ ์ ์ฅ์.
- ํ๋ก์ ํธ์ contribute์ ํ๊ธฐ ์ํด์,
- React ์๊ฒฉ ์ ์ฅ์๋ฅผ ๋ด ์๊ฒฉ ์ ์ฅ์๋ก ๊ฐ์ง๊ณ ์ค๋ ์์ ํ์ (Fork)
- ๋์ Remote Repository์ React ์ฝ๋๋ฅผ ์ฎ๊ฒจ์จ ์ํ. ์ด ์ฝ๋๋ฅผ ์์ ํ๊ธฐ ์ํด์๋ ๋ด ์ปดํจํฐ๋ก ๊ฐ์ ธ์ค๋ ์์ ์ด ๋ ํ์ (Clone).
- ๋ด ์ปดํจํฐ์์ React ์์ค์ฝ๋ ๋ณ๊ฒฝ ์์ ์ ์๋ฃ.
- ๋ณ๊ฒฝ๋ ๋ด์ฉ์ commit์ ํตํด ์ ์ฅํด ์ค ๋ค, Remote Repository์ ๋ฐ๋๋ก ์ฌ๋ ค์ฃผ๋ ์์ ์ด ํ์ (Push)
+@. Remote Repository์์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ ๋ Local Repository ๋ก ๊ฐ์ ธ์ค๋ Pull ์์ ๋ ๊ฐ๋ฅ.
๐ธ sudo apt install git
: ํจํค์ง git ์ค์น
๐ธ git --version
์ ํตํด ์ ์์ ์ผ๋ก ์ค์น๋๋์ง ํ์ธ.
๐ธ WSL์ Git์ด ์ด๋ฏธ ์ค์น๋์ด ์์.
๐ธ Git์ ์ค์นํ๋ฉด ๊ฐ์ฅ ๋จผ์ , ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ค์ ํจ.
๐ธ ์ค์ ์ ๊ธฐ๋ก๋ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋ฉ์ผ ์ฃผ์๋ฅผ ์์ผ๋ก ์งํํ Git ์ปค๋ฐ ๋ด์ญ์ ๊ธฐ๋กํจ.
๐ธ git config --global user.name "๋์ ์ฌ์ฉ์ ์ด๋ฆ"
๐ธ git config --global user.email "๋ด ์ด๋ฉ์ผ ์ฃผ์"
--global
์ต์
์ผ๋ก ์ค์ ํ๋ฉด, ์ฌ์ฉ์ ํ์ ์ ์ฅ๋๋ฏ๋ก git์ ์ค์ ํ ๋ ์ฒ์์ ๋จ ํ ๋ฒ๋ง ์
๋ ฅํด๋ ๋จ. ๋์ค์ github์ ์ฌ์ฉ์ ์ด๋ฆ์ด๋ ์ด๋ฉ์ผ์ ๋ณ๊ฒฝํ๋ค๋ฉด ์ด ๋ช
๋ น์ด๋ฅผ ๋ค์ ์
๋ ฅํด์ผํจ.--global
์ต์
์ ๋นผ๊ณ ๋ช
๋ น์ ์คํํ ์ ์์.
Git์์ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ ๋, ํนํ merge commit ํ์ธ ๋ฉ์์ง๊ฐ ๋์ฌ ๋ ํ ์คํธ ์๋ํฐ๊ฐ ์ด๋ฆผ. ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํ ์คํธ ์๋ํฐ vi๊ฐ ์ด๋ฆฌ๋๋ฐ vi์ ์ต์ํ์ง ์์ผ๋ฉด nano๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข์.
git config --global core.editor nano
๐ธ Git ์ต์ด ์ค์
๐ธ ssh๋ secure shell์ ์ค์๋ง๋ก, ๋ณด์์ด ๊ฐํ๋ shell ์ ์์ ๋ปํจ.
๐ธ CLI ํ๊ฒฝ(ํฐ๋ฏธ๋)์์ ๋ค๋ฅธ PC์ ์ ์ํ๊ฑฐ๋ ์์ฒญํ ๋ ์ฌ์ฉํ๋ฉฐ, ๋น๋์นญํค๋ฅผ ์ด์ฉํด ์ฌ์ฉ์๋ฅผ ์ธ์ฆํจ.
๐ธ github์ ssh ๊ณต๊ฐํค(๋น๋์นญํค ์ค ํ๋)๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ
๐ธ ssh๋ฅผ ์ด์ฉํด git cloneํ๋ ๋ฐฉ๋ฒ
๐ธ sshํค๋ ๋น๋์นญํค๋ก ๊ตฌ์ฑ๋จ.
๐ธ ssh-keygen
: ~/.ssh./
๊ฒฝ๋ก์ id_rsa
(Private Key; ๊ฐ์ธํค)์ id_rsa.pub
(Public Key; ๊ณต๊ฐํค)๋ฅผ ์์ฑ.
๐ธ cat ~/.ssh/id_rsa.pub
: ๊ณต๊ฐํค ๋ณต์ฌ
๐ธ Github์์ ํ๋กํ ํด๋ฆญ --> Settings
--> SSH and GPG keys
--> New SSH hey
--> ์ฌ์ฉ์ ์์๋ก title์ ์์ฑํ๊ณ , ๋ณต์ฌํด๋ ๊ณต๊ฐํค๋ฅผ key์ ์
๋ ฅ --> add SSH key