C.W.K.
Stream
Lesson 04 of 10 · published

Prompt 의 해부학

~15 min · prompt, ps1, powerlevel10k, starship

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

Prompt 가 사실 뭐야?

Prompt 는 매 입력 전에 shell 이 출력하는 문자열 일 뿐이야. bash 는 $PS1 에, zsh 는 $PROMPT (또는 $PS1) 에 저장돼. 그냥 텍스트에 escape code 가 섞인 거고, shell 이 매번 evaluate 해서 출력해. 그래서 좋은 prompt 는 거의 다 escape 몇 글자 조합이야 — 플러그인이 아니라.

자주 보는 escape code

  • %n / \u — 사용자 이름
  • %m / \h — short host name
  • %~ / \w — 현재 디렉터리 (홈은 ~)
  • %? / $? — 직전 command 의 exit code
  • %F{red} / \[\033[31m\] — 색 시작 (zsh / bash)
  • %f / \[\033[0m\] — 색 reset

남의 .zshrc 에서 PROMPT='%F{cyan}%n%f@%m %~ %F{red}%(?..%?)%f%# ' 같은 거 보면, 해석은 — cyan 사용자명, 호스트, 작업 디렉터리, exit code 가 0 아닐 때만 빨간색으로 표시, 그리고 prompt 글자.

Multi-line / Right prompt

Prompt 를 두 줄로 나눠서 command 입력은 항상 왼쪽 끝에서 시작하게 만들 수 있어. PROMPT 끝에 $'\n' 넣고 마지막 줄을 짧은 glyph 로 둬. zsh 의 RPROMPT 는 같은 줄 오른쪽 에 출력 — git branch 같은 정보를 입력 영역 밀지 않게 보여줄 때 좋아.

직접 안 쓰고 받아쓰는 prompt

Escape code 하나하나 외울 필요 없어. Powerlevel10k (zsh 전용) / Starship (아무 shell) 이 git status, Python venv, Node 버전, Kubernetes context, AWS profile, 직전 명령 실행 시간까지 빠르고 비동기로 그려줘. 직접 쓰는 게 취미 아니면 Starship 깔고 넘어가.

Code

최소한의 정보가 들어간 zsh prompt·zsh
# Add to ~/.zshrc
setopt PROMPT_SUBST
autoload -U colors && colors
PROMPT='%F{cyan}%n%f@%m %~ %F{red}%(?..[%?] )%f%# '
RPROMPT='%F{8}%*%f'   # right-aligned clock
30 초 안에 Starship 설치·bash
brew install starship
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
exec zsh   # reload

External links

Exercise

Starship 설치 (brew install starship, .zshrceval "$(starship init zsh)"). git repo 들어가 보고, venv 가 있는 Python 프로젝트로 cd 해 봐. Prompt 가 자동으로 바뀌어 — branch 표시, Python 아이콘, venv 이름. 스크립팅 한 줄 안 하고 다 보임.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.