Zsh μ΄κΈ° μ€μ κ°μ΄λ
zshλ₯Ό μ²μ μ€νν λ λνλλ μ€μ λ§λ²μ¬ (zsh-newuser-install) μλ²½ κ°μ΄λμ
λλ€.
π μ€μ μμ κ°μ
λ©μΈ λ©λ΄
βββ (1) νμ€ν 리 μ€μ β
κΆμ₯
βββ (2) μλμμ± μμ€ν
β
κΆμ₯
βββ (3) ν€ λ°μΈλ© μ€μ β
κΆμ₯
βββ (4) μ
Έ μ΅μ
μ€μ β
κΆμ₯
βββ (0) μ€μ μ μ₯ λ° μλ£
1οΈβ£ νμ€ν 리 μ€μ (History Configuration)
μ§ν κ³Όμ
- λ©μΈ λ©λ΄μμ
1μ ν - κΈ°λ³Έ μ€μ νμΈ ν
0μ ννμ¬ λ©μΈ λ©λ΄λ‘ 볡κ·
κΈ°λ³Έ μ€μ κ° (κΆμ₯)
HISTSIZE=1000 # μ
Έ λ©λͺ¨λ¦¬μ μ μ₯ν λͺ
λ Ήμ΄ μ
HISTFILE=~/.histfile # νμ€ν 리 νμΌ μμΉ
SAVEHIST=1000 # νμΌμ μ μ₯ν λͺ
λ Ήμ΄ μ
μλ―Έ
- HISTSIZE: νμ¬ μΈμ μμ κΈ°μ΅ν λͺ λ Ήμ΄ κ°μ
- HISTFILE: λͺ λ Ήμ΄ κΈ°λ‘μ μ μ₯ν νμΌ
- SAVEHIST: νμΌμ μꡬ μ μ₯ν λͺ λ Ήμ΄ κ°μ
2οΈβ£ μλμμ± μμ€ν (Completion System)
μ§ν κ³Όμ
- λ©μΈ λ©λ΄μμ
2μ ν 1μ ν (κΈ°λ³Έ μ΅μ μΌλ‘ νμ±ν)
κΈ°λ₯
- TAB ν€λ‘ λͺ λ Ήμ΄, νμΌλͺ , μ΅μ μλμμ±
- λ§€μ° κ°λ ₯ν 컨ν μ€νΈ μΈμ μμ± κΈ°λ₯
μμ
cd Do<TAB> # β Documents/
git che<TAB> # β checkout
npm in<TAB> # β install
ssh user@<TAB> # β μλ €μ§ νΈμ€νΈ λͺ©λ‘
3οΈβ£ ν€ λ°μΈλ© μ€μ (Key Bindings)
μ§ν κ³Όμ
- λ©μΈ λ©λ΄μμ
3μ ν 0μ ν (Emacs μ€νμΌ μ μ§ - κΆμ₯)
Emacs μ€νμΌ μ£Όμ λ¨μΆν€
| λ¨μΆν€ | κΈ°λ₯ |
|---|---|
Ctrl+A |
μ€μ 맨 μμΌλ‘ μ΄λ |
Ctrl+E |
μ€μ 맨 λ€λ‘ μ΄λ |
Ctrl+U |
컀μλΆν° μ€ μμκΉμ§ μμ |
Ctrl+K |
컀μλΆν° μ€ λκΉμ§ μμ |
Ctrl+W |
λ¨μ΄ μμ |
Ctrl+L |
νλ©΄ μ 리 |
μ ν κΈ°μ€
- Emacs μ€νμΌ: μΌλ° μ¬μ©μ κΆμ₯ (μ§κ΄μ )
- Vi μ€νμΌ: vim/vi μλν°μ λ§€μ° μ΅μν κ²½μ°
4οΈβ£ μ Έ μ΅μ μ€μ (Shell Options)
μ§ν κ³Όμ
- λ©μΈ λ©λ΄μμ
4μ ν - κ° μ΅μ μ μμλλ‘ μ€μ
κΆμ₯ μ€μ
β autocd (1λ²) - λλ ν 리 κ°νΈ μ΄λ
# μ ν: (s) to set it (turn it on)
κΈ°λ₯: λλ ν 리 μ΄λ¦λ§ μ
λ ₯ν΄λ cd μμ΄ μ΄λ
# κΈ°μ‘΄ λ°©μ
cd /home/username/Documents
# autocd νμ±ν μ
/home/username/Documents # λ°λ‘ μ΄λ!
β notify (5λ²) - λ°±κ·ΈλΌμ΄λ μμ μλ¦Ό
# μ ν: (s) to set it (turn it on)
κΈ°λ₯: λ°±κ·ΈλΌμ΄λ μμ μλ£/μν λ³κ²½ μ μ¦μ μλ¦Ό
β οΈ nomatch (3λ²) - ν¨ν΄ λ§€μΉ μ€λ₯ (μ νμ )
# μ ν: (s) to set it (turn it on) - μμ μ± μ νΈ μ
# μ ν: (u) to unset it (turn it off) - μ μ°μ± μ νΈ μ
κΈ°λ₯: μμΌλμΉ΄λ ν¨ν΄μ΄ λ§€μΉλμ§ μμ λ μ€λ₯ λ°μ - μ₯μ : μ€νλ μ€μ λ°©μ§ - λ¨μ : λλ‘λ λ²κ±°λ‘μΈ μ μμ
β beep (4λ²) - μ€λ₯ μ λΉνμ (λΉκΆμ₯)
# μ ν: (u) to unset it (turn it off)
μ΄μ : μμμΌλ‘ μΈν λΆνΈν¨
β extendedglob (2λ²) - νμ₯ κΈλ‘ (κ³ κΈ μ¬μ©μλ§)
# μ ν: (n) neither - κΈ°λ³Έκ° μ μ§
μ΄μ : μΌλ° μ¬μ©μμκ²λ λΆνμν 볡μ‘μ±
μ€μ μλ£
λͺ¨λ μ΅μ
μ€μ ν 0 μ ννμ¬ λ©μΈ λ©λ΄λ‘ 볡κ·
5οΈβ£ μ΅μ’ μ μ₯ λ° μλ£
λ©μΈ λ©λ΄μμ μ΅μ’ νμΈ
(1) Configure settings for history... (Unsaved changes.)
(2) Use the new completion system... (Unsaved changes.)
(3) Configure how keys behave... (Unsaved changes.)
(4) Pick some of the more common shell options... (Unsaved changes.)
(0) Exit, saving the new settings.
μ μ₯ λ° μλ£
0 μ ννμ¬ λͺ¨λ μ€μ μ μ₯
π― μ΅μ’ κ²°κ³Ό
μ€μ μλ£ ν ~/.zshrc νμΌμ΄ μμ±λλ©° λ€μ κΈ°λ₯λ€μ΄ νμ±νλ©λλ€:
β νμ±νλ κΈ°λ₯λ€
- νμ€ν 리 κ΄λ¦¬: 1000κ° λͺ λ Ήμ΄ κΈ°λ‘
- TAB μλμμ±: κ°λ ₯ν 컨ν μ€νΈ μΈμ μμ±
- Emacs λ¨μΆν€: νΈλ¦¬ν λΌμΈ νΈμ§
- autocd: λλ ν 리 μ΄λ¦λ§μΌλ‘ μ΄λ
- notify: λ°±κ·ΈλΌμ΄λ μμ μλ¦Ό
π§ μΆν μ€μ λ³κ²½ λ°©λ²
μ¦μ λ³κ²½ (νμ¬ μΈμ λ§)
setopt autocd # μ΅μ
μΌκΈ°
unsetopt autocd # μ΅μ
λκΈ°
setopt | grep auto # νμ¬ μ€μ νμΈ
μꡬ λ³κ²½ (~/.zshrc μμ )
nano ~/.zshrc # νμΌ νΈμ§
source ~/.zshrc # μ€μ λ€μ λ‘λ
μ€μ λ§λ²μ¬ μ¬μ€ν
autoload -Uz zsh-newuser-install
zsh-newuser-install
π μΆκ° ν
μ€μ νμΈ
# νμ¬ νμ±νλ μ΅μ
λ€ νμΈ
setopt
# νΉμ μ΅μ
νμΈ
setopt | grep -E "(autocd|notify|nomatch)"
# zsh λ²μ νμΈ
zsh --version
λμλ§
man zsh # zsh λ§€λ΄μΌ
man zshoptions # μ΅μ
μμΈ μ€λͺ
man zshcompsys # μλμμ± μμ€ν
μ€λͺ
μ΄μ κ°λ ₯νκ³ νΈλ¦¬ν zsh νκ²½μ΄ μ€λΉλμμ΅λλ€! π