24 Zsh ํ๋ฌ๊ทธ์ธ๐ ๋ชจ๋ ๊ฐ๋ฐ์ ๋ฐ DevOps ์์ง๋์ด ๐ฅ ๊ฐ 2025๋ ์ ์ฌ์ฉํด์ผ ํ
Source: Dev.to

์๊ฐ
Zsh์ Oh My Zsh๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ด๋ฏธ ํ ๋ฐ ์์ ์๋ ์ ์ ๋๋ค. ํ์ง๋ง ํ๋ฌ๊ทธ์ธ ์ํ๊ณ์ ์ ์ฒด ํ์ ํ์ฉํ๊ณ ์๋์? ํฐ๋ฏธ๋์ ์์ฐ์ฑ ํ์ํ์ฐ์ค๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ฌ์ ์๊ตฌ ์ฌํญ
์งํํ๊ธฐ ์ ์ ๋ค์์ด ์ค์น๋์ด ์๋์ง ํ์ธํ์ธ์:
- Zsh ์ค์น โ
zsh --version์ผ๋ก ํ์ธ (๋ฒ์ โฏ5.0 ์ด์ ๊ถ์ฅ) - Oh My Zsh ์ค์น โ ์์ง ์ค์นํ์ง ์์๋ค๋ฉด ๋ค์ ๋ช ๋ น์ผ๋ก ์ค์น:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
- Git ์ค์น โ ์ปค์คํ ํ๋ฌ๊ทธ์ธ์ ํด๋ก ํ๋ ๋ฐ ํ์ํฉ๋๋ค
- ๊ธฐ๋ณธ ํฐ๋ฏธ๋ ์ง์ โ
nano,vimํน์ ์ ํธํ๋ ํธ์ง๊ธฐ๋ก ํ์ผ์ ํธ์งํ ์ ์์ด์ผ ํฉ๋๋ค
์ค์ ์ ํ์ธํ๋ ค๋ฉด:
# Zsh ๋ฒ์ ํ์ธ
zsh --version
# Oh My Zsh ์ค์น ์ฌ๋ถ ํ์ธ
ls ~/.oh-my-zsh
# Git ํ์ธ
git --version
ํ๋ฌ๊ทธ์ธ์ด ์ค์ํ ์ด์
Oh My Zsh์ ํจ๊ป ์ ๊ณต๋๋ ๊ธฐ๋ณธ Zsh ์ค์น๋ git ํ๋ฌ๊ทธ์ธ๋ง ํ์ฑํ๋ฉ๋๋ค. ์์์ ์ข์ง๋ง, ์ง๋ฅํ ์๋ ์์ฑ, ์ ์ฉํ ๋ณ์นญ, ์ฃผ๋น ๋ช ์๊ฐ์ ์ ์ฝํด ์ค ์์ฐ์ฑ ๋จ์ถํค ๋ฑ์ ๋์น๊ณ ์๋ ์
์
๋๋ค.
์ค์ ๋ฐฉ๋ฒ
๋จผ์ ์ ๋ ๋์น ์ ์๋ ๋ ๊ฐ์ ์ปค๋ฎค๋ํฐ ํ๋ฌ๊ทธ์ธ์ ์ค์นํฉ๋๋ค:
- zsh-autosuggestions (Fishโ๊ฐ์ ์ ์)
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
- zsh-syntax-highlighting (์ค์๊ฐ ๋ช ๋ น ๊ฒ์ฆ)
git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
๊ฐ๋ ฅํ ํ๋ฌ๊ทธ์ธ ๋ฆฌ์คํธ
~/.zshrc ํ์ผ์ ์ด๊ณ plugins=() ์น์
์ ๋ค์๊ณผ ๊ฐ์ด ๊ต์ฒดํฉ๋๋ค:
plugins=(
# ๋ฒ์ ๊ด๋ฆฌ
git
# ํด๋ผ์ฐ๋ & ์ธํ๋ผ
docker
docker-compose
kubectl
helm
terraform
aws
gcloud
azure
ansible
# ํ๋ก๊ทธ๋๋ฐ ์ธ์ด & ๋๊ตฌ
python
pip
node
npm
yarn
golang
rust
# ์์ฐ์ฑ ํฅ์
sudo # ESC๋ฅผ ๋ ๋ฒ ๋๋ฌ ์ด์ ๋ช
๋ น์ sudo ์ถ๊ฐ
extract # .tar, .zip, .gz ๋ฑ ๋ชจ๋ ์์ถ ํด์ ์ง์
z # ์์ฃผ ์ฌ์ฉํ๋ ๋๋ ํฐ๋ฆฌ๋ก ๋น ๋ฅด๊ฒ ์ด๋
history # ํฅ์๋ ํ์คํ ๋ฆฌ ๋ช
๋ น
command-not-found # ์๋ ๋ช
๋ น์ ๋ํด ์ค์น ํจํค์ง ์ ์
vscode # VS Code ๋ณ์นญ ๋ฐ ๋จ์ถํค
# ์ปค๋ฎค๋ํฐ ํ๋ฌ๊ทธ์ธ (๋ง์ง๋ง์ ์์น)
zsh-autosuggestions
zsh-syntax-highlighting
)
๊ฐ ํ๋ฌ๊ทธ์ธ์ ์ญํ
ํด๋ผ์ฐ๋ & ์ธํ๋ผ ํ๋ฌ๊ทธ์ธ
- docker & docker-compose โ ์ปจํ ์ด๋, ์ด๋ฏธ์ง, compose ๋ช ๋ น ์๋ ์์ฑ
- kubectl โ Kubernetes ๋ช
๋ น ์๋ ์์ฑ ๋ฐ ์ ์ฉํ ๋ณ์นญ (
kโkubectl,kgpโkubectl get pods) - helm โ Helm ์ฐจํธ ๊ด๋ฆฌ ์๋ ์์ฑ
- terraform โ Terraform ๋ช ๋ น ์๋ ์์ฑ
- aws / gcloud / azure โ ๊ฐ ํด๋ผ์ฐ๋ ์ ๊ณต์ CLI ์๋ ์์ฑ
์ธ์ด ํ๋ฌ๊ทธ์ธ
- python / pip โ ํ์ด์ฌ ํ๊ฒฝ ๋ฐ ํจํค์ง ๊ด๋ฆฌ ๋จ์ถํค
- node / npm / yarn โ JavaScript ์ํ๊ณ ์๋ ์์ฑ
- golang / rust โ ์ธ์ด๋ณ ๋๊ตฌ ์ง์
์์ฐ์ฑ ํ๋ฌ๊ทธ์ธ
- sudo โ ESC๋ฅผ ๋ ๋ฒ ๋๋ฌ ๋ง์ง๋ง ๋ช
๋ น์
sudo์ ๋์ด ์ถ๊ฐ - extract โ
extract <ํ์ผ>๋ก ๋ชจ๋ ์์ถ ํ์ ํด์ โ tar ์ต์ ์ ์ธ์ธ ํ์ ์์ - z โ ์ฌ์ฉ ๊ธฐ๋ก์ด ์์ด๋ฉด
z project๋ก/home/user/dev/project๋ก ๋ฐ๋ก ์ด๋ - command-not-found โ ๋๋ฝ๋ ๋ช ๋ น์ ๋ํด ์ค์นํด์ผ ํ ํจํค์ง ์ ์ (Ubuntu/Debian)
์ปค๋ฎค๋ํฐ ํ๋ฌ๊ทธ์ธ
- zsh-autosuggestions โ ์ ๋ ฅ ์ค ํ์คํ ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ์ (โ ํค๋ก ์๋ฝ)
- zsh-syntax-highlighting โ ๋ช ๋ น์ด ์ ํจํ๋ฉด ์ด๋ก์, ์๋ชป๋๋ฉด ๋นจ๊ฐ์์ผ๋ก ํ์ โ ์คํ ์ ์คํ๋ฅผ ์ก์์ค
์ค์ ์ ์ฉํ๊ธฐ
.zshrc๋ฅผ ์
๋ฐ์ดํธํ ๋ค ๋ค์ ๋ช
๋ น์ผ๋ก ์ฌ๋ก๋ํฉ๋๋ค:
source ~/.zshrc
์ค์ ์์
์ ์ฉ ์
$ kubctl get pods # ์คํ๊ฐ ๋ฐ๋ก ๋นจ๊ฐ์์ผ๋ก ํ์๋จ
$ # ์ค์ ์ธ์, ์์
$ kubectl get pods
ํ๋ฌ๊ทธ์ธ ์ ์ฉ ํ
- ์คํ๊ฐ ์ฆ์ ๋นจ๊ฐ์์ผ๋ก ๊ฐ์กฐ๋ฉ๋๋ค.
kub...๋ฅผ ์ ๋ ฅํ๋ฉด ํ์คํ ๋ฆฌ ๊ธฐ๋ฐ ์๋ ์ ์kubectl get pods๊ฐ ๋ํ๋ฉ๋๋ค.- โ ํค๋ฅผ ๋๋ฌ ์๋ฝํฉ๋๋ค.
๋๋ k ๋ณ์นญ ์ฌ์ฉ: k get pods.
๋๋ ํฐ๋ฆฌ ์ด๋
# ๊ธฐ์กด ๋ฐฉ์
$ cd ~/projects/work/important-service/
# 'z' ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ (ํ ๋ฒ ๋ฐฉ๋ฌธ ํ)
$ z important
# ์ฆ์ ~/projects/work/important-service/ ๋ก ์ด๋
์์ถ ํด์
# ๊ธฐ์กด ๋ฐฉ์
$ tar -xzvf file.tar.gz
$ unzip archive.zip
$ tar -xjf file.tar.bz2
# 'extract' ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ
$ extract file.tar.gz
$ extract archive.zip
$ extract file.tar.bz2
# ๋ชจ๋ ๋์ผํ๊ฒ ๋์!
์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ
ํ๋ฌ๊ทธ์ธ์ด ๋ง์ผ๋ฉด ์ ธ ์์ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค. ์ง์ฐ์ด ๋๊ปด์ง๋ค๋ฉด:
- ์ค์ ๋ก ์ฌ์ฉํ๋ ๋๊ตฌ์๋ง ํ๋ฌ๊ทธ์ธ ํ์ฑํ
- ์ฌ์ฉํ์ง ์๋ ์ธ์ด ํ๋ฌ๊ทธ์ธ ์ ๊ฑฐ
time zsh -i -c exit๋ก ์์ ์๊ฐ ์ธก์
๋ณด๋์ค: ์ ์ฉํ ๋ณ์นญ
ํ๋ฌ๊ทธ์ธ์ ํ์ฑํํ๋ฉด ์์ญ ๊ฐ์ ์ ์ฉํ ๋ณ์นญ์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
Docker
dpsโdocker psdpaโdocker ps -adceโdocker-compose exec
Kubectl
kโkubectlkgpโkubectl get podskgdโkubectl get deploymentskafโkubectl apply -f
Git
gstโgit statusgcโgit commitgpโgit pushgcoโgit checkout
ํฐ๋ฏธ๋์์ alias ๋ฅผ ์คํํ๋ฉด ํ์ฌ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๋ณ์นญ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ค์ ๋จ๊ณ
- ํ
๋ง ํ์ โ
agnosterํน์powerlevel10k๋ก ์๋ฆ๋ค์ด ํ๋กฌํํธ ์ ์ฉ - ์ปค์คํ
๋ณ์นญ โ
~/.zshrcํน์~/.oh-my-zsh/custom/aliases.zsh์ ์ง์ ์ถ๊ฐ - ํ๋ฌ๊ทธ์ธ ๋ ์ฐพ์๋ณด๊ธฐ โ
ls ~/.oh-my-zsh/plugins/๋ก 350๊ฐ ์ด์์ ํ๋ฌ๊ทธ์ธ ํ์ธ
๊ฒฐ๋ก
์ ๊ตฌ์ฑ๋ ํฐ๋ฏธ๋์ ๊ฐ๋ฐ์์ ์ต๊ณ ์ ๋๋ฐ์์ ๋๋ค. ์ด ํ๋ฌ๊ทธ์ธ๋ค์ Zsh๋ฅผ ๋จ์ ์์์ ์ ๋ ฅํ๋ฉด์ ์๋ ์์ฑ, ์ ์, ๊ฒ์ฆ์ ํด์ฃผ๋ ์ง๋ฅํ ์ด์์คํดํธ๋ก ๋ณ๋ชจ์ํต๋๋ค. ์ด๊ธฐ ์ค์ ์ ์ฝ 5๋ถ ์ ๋ ๊ฑธ๋ฆฌ์ง๋ง, ํจ์จ์ฑ ํฅ์๊ณผ ์ปจํ ์คํธ ์ ํ ๊ฐ์๋ฅผ ํตํด ๋งค์ฃผ ๋ช ์๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค.
์ด๋ค ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๊ณ ๊ณ์ ๊ฐ์? ๋๊ธ์ ์ฌ๋ฌ๋ถ์ด ์ฆ๊ฒจ ์ฐ๋ ํ๋ฌ๊ทธ์ธ์ ๊ณต์ ํด์ฃผ์ธ์!