๐Shell ์ด๋?
์ ธ(Shell)์ ์ปดํจํฐ ์ด์ ์ฒด์ ์ ์ฌ์ฉ์ ๊ฐ์ ์ํธ ์์ฉ์ ๋ด๋นํ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
์ฌ์ฉ์๋ ์ ธ์ ํตํด ์ด์ ์ฒด์ ์ ๋ช ๋ น์ ๋ด๋ฆฌ๊ณ , ํ์ผ์ ๊ด๋ฆฌํ๋ฉฐ, ๋ค์ํ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ค.
์ฝ๊ฒ ๋งํด์ ํ์ผ ์กฐ์, ํ๋ก๊ทธ๋จ ์คํ, ๋ณ์ ๋ฐ ํ๊ฒฝ ์ค์ , ๊ถํ ์ค์ ๋ฑ ์ปดํจํฐ ์ด์ ์ฒด์ ๋ฅผ Shell์ ํตํด ์กฐ์ํ ์ ์๋ค.
๋ค์ํ ๋ชจ๋ธ ์ฝ๋๋ฅผ ๊ณต๋ถํ๋ค๋ณด๋ฉด, ํ์ด์ฌ py ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ๊ฒฝ์ฐ๋ ์์ง๋ง .sh (Shell Script ํ์ผ)๋ก ๋์ด์๋ ๊ฒฝ์ฐ๋ ๋ง์ด ๋ณผ ์ ์๋ค. ์ด์ฒ๋ผ Shell Script ํ์ผ์ ํ์ฉํ์ฌ ๋ค์ํ ์๋ํ ์์ , ํ๋ก๊ทธ๋จ ์คํ ๋ฑ์ ์ํํ ์ ์๋ค.
๐Shell ์ข ๋ฅ : Bash / Zsh
์ ํธํ๋ ์ ธ์ ์ ํํ์ฌ ๊ฐ์ธ์ ์ธ ์์ ํ๊ฒฝ ์ค์ ๊ฐ๋ฅํ๋ค. ํฐ๋ฏธ๋ ๋๋ ๋ช ๋ น ํ๋กฌํํธ๋ฅผ ํตํด ์ ธ๊ณผ ์ํธ ์์ฉํ๋ฉฐ, ์๋์ฐ์ฆ์ ๊ฒฝ์ฐ CMD๋ PowerShell, Unix ๊ณ์ด์ ์ด์ ์ฒด์ ์์๋ Bash, Zsh ๋ฑ์ด ํํ ์ฌ์ฉ๋๋ ์ ธ์ ์ข ๋ฅ์ด๋ค.
sh(์ต์ด์ shell), bash(Linux ํ์ค ์), zsh(macOS ์นดํ๋ฆฌ๋ ์ด์)์ด ์ ๋ช ํ๋ค.
- Bash(Bourne Again Shell)
- Zsh(Z Shell)
Bash์ Zsh์ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ๋ค. ๊ฐ๋ฐ์๋ค์ Zsh๋ฅผ ์ ํธํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋๋ฐ ๋๋ ๊ทธ๋ฅ MacOS ์ด๊ธฐ ์ธํ ์ด Zsh๋ก ๋์ด ์์ด ๋งํธํ ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค.
| ๊ตฌ๋ถ | ๊ธฐ๋ฅ ๋ฐ ํ์ฅ์ฑ | ์๋์์ฑ ๋ฐ ์คํฌ๋ฆฝํ | ํ ๋ง ๋ฐ ํ๋ฌ๊ทธ์ธ | ์ฌ์ฉ์ ์ ์ ๋ฐ ์ค์ |
| Bash | ๋ง์ ๋ฆฌ๋ ์ค ์์คํ ๋ฐ macOS์์ ๊ธฐ๋ณธ ์ ธ๋ก ์ฌ์ฉ๋๋ฉฐ, Bournce ์ ธ์ ํ์ฅ. ๋งค์ฐ ์์ ์ , POSIX ํธํ์ฑ | Zsh์ ๋นํด ๋ค์ ์ ํ์ | X ์ํ๋ ๊ธฐ๋ฅ ์ถ๊ฐํ๋ ค๋ฉด ์ง์ ์คํฌ๋ฆฝํธ ์์ฑํด์ผํจ | Zsh์ ๋นํด ๋ค์ ๋ณต์ก |
| Zsh | Bash์ ํ์ฅ ๋ฒ์ ์ผ๋ก ๋ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ํ์ฅ์ฑ ์ ๊ณต. ์๋ ์์ฑ ๊ธฐ๋ฅ Good. ํ๋ฌ๊ทธ์ธ ์์คํ , ํ ๋ง ๋ฑ ํฌํจํ์ฌ ์ฌ์ฉ์ ์นํ์ ๊ธฐ๋ฅ | ์๋์์ฑ ๊ธฐ๋ฅ์ด ์ข์ ๋ช ๋ น์ด ์ ๋ ฅ ํจ์จ์ ์ผ๋ก ๋์์ค | Oh My Zsh๊ฐ์ ํ๋ ์์ํฌ๋ก ๋ค์ํ ํ ๋ง๋ ํ๋ฌ๊ทธ์ธ ์ฝ๊ฒ ์ถ๊ฐ ๊ฐ๋ฅ | ๋๊ตฌ ํธํ์ฑ์ด ์ข์ ์ค์ ์ฌ์ |
[Shell์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ]
- ์๋ฒ์์ ์ ์ํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- crontab ๋ฑ Linux์ ๋ด์ฅ ๊ธฐ๋ฅ์ ํ์ฉํ๋ ๊ฒฝ์ฐ
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด shell command๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- Docker๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋ฐฑ๋์ ์๋ฒ๋ฅผ ๊ด๋ฆฌํ ๊ฒฝ์ฐ
- Jupyter Notebook์ cell ์์ !๋ฅผ ๋ถ์ฌ์ shell command๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- ํฐ๋ฏธ๋์์ python3, jupyter notebook์ ์คํํ๋ ๊ฒฝ์ฐ
- ๋ฐฐํฌ ํ์ดํ๋ผ์ธ(Github Action ๋ฑ)์ ์คํํ๋ ๊ฒฝ์ฐ
๐Shell ์ฌ์ฉํ๊ธฐ
๐ก์ด๋ค Shell์ ์ฌ์ฉํ๊ณ ์์๊น?
๋ด๊ฐ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ Shell์ ์ข ๋ฅ๋ฅผ ์๊ณ ์ถ๋ค๋ฉด ํฐ๋ฏธ๋ /CMD ์ฐฝ์์ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
echo $SHELL

zsh์ธ์ง bash์ธ์ง ์์ ์๋ค.
chsh -s /bin/bash
chsh -s /bin/zsh
๊ฐ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ํตํด์๋ bash ํน์ zsh๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
๐ก ์์ฃผ ์ฌ์ฉํ๋ Shell ๋ช ๋ น์ด
| ์ด๋ฆ | ์ค๋ช |
|---|---|
| man | command, system call, function ๋ฑ ๋ค์ํ ๋ฆฌ๋ ์ค ๋ช ๋ น์ด์ ์ฌ์ฉ๋ฒ์ ํ์ธํ ์ ์๋ค. |
| mkdir | ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๋ค. (make directory) |
| ls | ํ์ฌ ์์นํ ๋๋ ํ ๋ฆฌ์ ์๋ ํด๋์ ํ์ผ ํ์ธํ ๋ ์ฌ์ฉํ๋ฉฐ, ์ฌ๋ฌ ์ต์ ์ ํตํด ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค. |
| pwd | ํ์ฌ ์์นํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ถ๋ ฅํ๋ค. (print working directory) |
| cd | ํ์ฌ ๋๋ ํ ๋ฆฌ ์์น๋ฅผ ๋ค๋ฅธ ์์น๋ก ๋ณ๊ฒฝํ๋ค. (change directory) |
| echo | ๋ณ์ ๊ฐ, ๋ฌธ์์ด ๋ฑ ํ ์คํธ๋ฅผ ์ถ๋ ฅํ๋ค. |
| bash | shell script(์ ์คํฌ๋ฆฝํธ)๋ฅผ ์คํํ๋ค. |
| sudo | ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ถํ์ ์ป๋ ๊ฒ(substitute user do)์ด๋ฉฐ, ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ํน์ ๋ช ๋ น์ ์ํํด์ผ ํ ๋ ์ฌ์ฉํ๋ค. |
| cp | ํ์ผ์ ๋ณต์ฌํ๋ค. (copy) |
| mv | ํ์ผ์ ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ ์์น๋ก ์ด๋ํ๋ฉฐ, ํ์ผ ์ด๋ฆ์ ๋ณ๊ฒฝํ ๋๋ ์ฌ์ฉํ ์ ์๋ค. (move) |
| clear | console์ ์๋ ๋ช ๋ น์ด๋ฅผ ๋ชจ๋ ์ง์ด๋ค. (cls, clean screen) |
| cat | ํ์ผ์ ๋ด์ฉ์ ํ ์คํธ๋ก ์ถ๋ ฅํ ์ ์์ผ๋ฉฐ, ์ธ์๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฃผ์ด์ ์ฌ๋ฌ ํ์ผ์ ๋ถ์ฌ์ ์ถ๋ ฅํ ์ ์๋ค. (concatenate) |
| history | ์ด์ ์ ์ฌ์ฉ๋ ๋ช ๋ น์ด ์ด๋ ฅ์ ๋ณผ ์ ์๋ค. |
| find | ํด๋ ๋๋ ํ์ผ์ ๊ฒ์ํ ๋ ์ฌ์ฉํ๋ค. |
| export | ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๋ค. |
| cut -f -d | delimeter๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ผ field๋ฒ์งธ ๊ฐ์ ์ถ๋ ฅํ๋ค. (-d: delimeter, -f:field) |
| redirection (>, >>) | ํ๋ก๊ทธ๋จ์ ์ถ๋ ฅ(stdout)์ ๋ค๋ฅธ ํ์ผ์ด๋ ์คํธ๋ฆผ์ผ๋ก ์ ๋ฌํ๋ค. |
| pipe ( | ) | ์ด๋ค ํ ํ๋ก๊ทธ๋จ์ ์ถ๋ ฅ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ค. |
| ps | ํ์ฌ ์คํ ์ค์ธ process๋ฅผ ํ์ธํ ์ ์๋ค. (process status) (-f: full format, -e: ๋ชจ๋ ํ๋ก์ธ์ค) |
| curl | ์น ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ์ ์์ผ๋ฉฐ, ์ฃผ๋ก ์น์ผ๋ก๋ถํฐ ํ์ผ์ ๋ค์ด๋ก๋๋ฐ์ ๋ ์ฌ์ฉํ๋ค. (client URL) |
| grep | ํ์ผ ๋๋ ํ ์คํธ์์ ํน์ ํค์๋๊ฐ ํฌํจ๋ ์ค๋ง ์ถ๋ ฅํ๋ค. (g / re / p) |
| chmod | ํ์ผ ๊ถํ์ ๋ณ๊ฒฝํ๋ค. (change mode) |
| nohup | ํฐ๋ฏธ๋ ์ข ๋ฃ ํ์๋ ๊ณ์ ์์ ์ด ์ ์ง๋๋๋ก ๋ฐฑ๊ทธ๋ผ์ด๋๋ก process๋ฅผ ์คํํ ๋ ์ฌ์ฉํ๋ค. (์: nohup helloword.py &) |
| scp | ssh๋ก ์ฐ๊ฒฐ๋ ํธ์คํธ ์ฌ์ด์ ํ์ผ์ ๋ณต์ฌํ ๋ ์ฌ์ฉํ๋ค. (secure copy) (-r: ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ํฌํจํด์ ์ฌ๊ท์ ์ผ๋ก ๋ณต์ฌ, -P: ssh ํฌํธ ์ง์ -i: SSH ์ค์ ์ ํ์ฉํด ์คํ) |
| df | ํ์ฌ ํ์ผ ์์คํ ์ด ์ผ๋งํผ์ ๋์คํฌ ์ฉ๋์ ์ฐจ์งํ๋์ง ํ์ธํ ์ ์๋ค. (disk file system) |
| wc | ์ต์
์ ๋ฐ๋ผ ํ์ผ ๋๋ stdin์ ๋ฐ์ดํธ, ๋ฌธ์, ๋จ์ด, ์ค ์๋ฅผ ์ถ๋ ฅํ ์ ์๋ค. (word count) |
[Reference]