24 Zsh ํ”Œ๋Ÿฌ๊ทธ์ธ๐Ÿ”Œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž ๋ฐ DevOps ์—”์ง€๋‹ˆ์–ด ๐Ÿ–ฅ ๊ฐ€ 2025๋…„์— ์‚ฌ์šฉํ•ด์•ผ ํ• 

๋ฐœํ–‰: (2025๋…„ 12์›” 5์ผ ์˜คํ›„ 07:22 GMT+9)
8 ๋ถ„ ์†Œ์š”
์›๋ฌธ: Dev.to

Source: Dev.to

24 Zsh ํ”Œ๋Ÿฌ๊ทธ์ธ๐Ÿ”Œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž & DevOps ์—”์ง€๋‹ˆ์–ด ๐Ÿ–ฅ ๊ฐ€ 2025๋…„์— ์‚ฌ์šฉํ•ด์•ผ ํ•  ํ”Œ๋Ÿฌ๊ทธ์ธ

์†Œ๊ฐœ

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 ํ”Œ๋Ÿฌ๊ทธ์ธ๋งŒ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘์€ ์ข‹์ง€๋งŒ, ์ง€๋Šฅํ˜• ์ž๋™ ์™„์„ฑ, ์œ ์šฉํ•œ ๋ณ„์นญ, ์ฃผ๋‹น ๋ช‡ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•ด ์ค„ ์ƒ์‚ฐ์„ฑ ๋‹จ์ถ•ํ‚ค ๋“ฑ์„ ๋†“์น˜๊ณ  ์žˆ๋Š” ์…ˆ์ž…๋‹ˆ๋‹ค.

์„ค์ • ๋ฐฉ๋ฒ•

๋จผ์ € ์ ˆ๋Œ€ ๋†“์น  ์ˆ˜ ์—†๋Š” ๋‘ ๊ฐœ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

  1. zsh-autosuggestions (Fishโ€‘๊ฐ™์€ ์ œ์•ˆ)
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
  1. 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 ps
  • dpa โ†’ docker ps -a
  • dce โ†’ docker-compose exec

Kubectl

  • k โ†’ kubectl
  • kgp โ†’ kubectl get pods
  • kgd โ†’ kubectl get deployments
  • kaf โ†’ kubectl apply -f

Git

  • gst โ†’ git status
  • gc โ†’ git commit
  • gp โ†’ git push
  • gco โ†’ git checkout

ํ„ฐ๋ฏธ๋„์—์„œ alias ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ˜„์žฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ณ„์นญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„

  • ํ…Œ๋งˆ ํƒ์ƒ‰ โ€“ agnoster ํ˜น์€ powerlevel10k ๋กœ ์•„๋ฆ„๋‹ค์šด ํ”„๋กฌํ”„ํŠธ ์ ์šฉ
  • ์ปค์Šคํ…€ ๋ณ„์นญ โ€“ ~/.zshrc ํ˜น์€ ~/.oh-my-zsh/custom/aliases.zsh ์— ์ง์ ‘ ์ถ”๊ฐ€
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ๋” ์ฐพ์•„๋ณด๊ธฐ โ€“ ls ~/.oh-my-zsh/plugins/ ๋กœ 350๊ฐœ ์ด์ƒ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ™•์ธ

๊ฒฐ๋ก 

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

์–ด๋–ค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ณ„์‹ ๊ฐ€์š”? ๋Œ“๊ธ€์— ์—ฌ๋Ÿฌ๋ถ„์ด ์ฆ๊ฒจ ์“ฐ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ณต์œ ํ•ด์ฃผ์„ธ์š”!

Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

CVE-2025-55182 (React Server Components Vulnerability)๊ฐ€ ์„œ๋ฒ„ ๋ฃจํŠธ์— .sh, .gz ๋˜๋Š” XMRig ๋งˆ์ด๋„ˆ์™€ ๊ฐ™์€ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์งˆ๋ฌธ: ์ €๋Š” Magento 2๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉํ•˜๋Š” React Server Components๊ฐ€ ํฌํ•จ๋œ Next.js ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ์„œ๋ฒ„๊ฐ€ ์นจํ•ด๋‹นํ–ˆ์œผ๋ฉฐ ์˜์‹ฌ์Šค๋Ÿฌ์šด ํŒŒ์ผ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹คโ€ฆ

Google Shopping Ads๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ต์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

Google Shopping Ads๋Š” ์ „์ž์ƒ๊ฑฐ๋ž˜ ๋น„์ฆˆ๋‹ˆ์Šค์— ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ์ˆ˜์ต ์ฐฝ์ถœ ์ฑ„๋„ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜จ๋ผ์ธ ์‡ผํ•‘์ด ์ง€์†์ ์œผ๋กœ ์„ฑ์žฅํ•˜๊ณ  ๊ณ ๊ฐโ€ฆ

S&P/ASX 200 Financials (XFJ) ์ดํ•ดํ•˜๊ธฐ: ํ˜ธ์ฃผ์˜ ๊ธˆ์œต ํŒŒ์›Œํ•˜์šฐ์Šค ์„นํ„ฐ ์‹ฌ์ธต ๋ถ„์„

ํ˜ธ์ฃผ ์ฃผ์‹ ์‹œ์žฅ์€ ๋‹ค์–‘ํ•œ ์„นํ„ฐ๊ฐ€ ํƒ„ํƒ„ํ•œ ๊ธฐ๋ฐ˜ ์œ„์— ๊ตฌ์ถ•๋˜์–ด ์žˆ์ง€๋งŒ, S&P/ASX 200 Financials XFJ index๋งŒํผ ์ „๋žต์  ๋ฌด๊ฒŒ๋ฅผ ์ง€๋‹Œ ์„นํ„ฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.