π tmux β ν°λ―Έλ μ΄ λλ§λ€ μ μΈμ μ΄ μκΈ°λ μ΄μ (attach -t ν¨μ )
μ Έ μμ μ tmux μλ attach μ€λν«μ΄ λ§€λ² λΉ μΈμ μ μλ‘ λ§λλ λ¬Έμ . `attach -t <μ΄λ¦>` νλμ½λ©κ³Ό μΈμ μ΄λ¦ λΆμΌμΉκ° μμΈμ΄κ³ , νκΉ μλ attach ν μ€λ‘ ν΄κ²°νλ€. JetBrains IDE ν°λ―Έλμμ tmuxκ° μλ μ€νλλ κ²μ λ§λ λ°©λ²κΉμ§.
μ΄ κΈμ tmux λ‘λλ§΅μ νΈλ¬λΈμν νΈμ΄λ€. μ λ¬ΈΒ·μ€μ Β·νλ¬κ·ΈμΈΒ·λΆνΈμ€νΈλ©κΉμ§ μ 체 κ²½λ‘λ λ‘λλ§΅μμ.
μ¦μ
.zshrc(λλ .bashrc)μ βν°λ―Έλμ μ΄λ©΄ μλμΌλ‘ tmux μΈμ
μ λΆλβ μ€λν«μ λ£μ΄ λκ³ μ°λ€ 보면, μ΄λ μκ° μ΄λ° μνκ° λλ€.
1
2
3
4
$ tmux ls
0-default: 2 windows (attached)
1-workspace: 2 windows
default: 1 windows # β μ μν λλ§λ€ νλμ© λμ΄λλ λΉ μΈμ
μ μ μμ
νλ μΈμ
(0-default)μ λ°λ‘ μλλ°, μ ν°λ―Έλμ μ΄ λλ§λ€ μ무κ²λ μλ default μΈμ
μ΄ κ³μ μλ‘ μκΈ΄λ€. λΆκΈ΄ λΆλλ° λ§€λ² λΉ μ°½μ λ¨μ΄μ§λ κ²μ΄λ€.
λ¬Έμ μ μ€λν«
μ Έ μμ μ μλ attachλ λ³΄ν΅ μ΄λ° ννλ€.
1
2
3
4
# tmux μλ μ€ν (μ΄λ―Έ tmux μμ΄ μλ λλ§, IDE λ΄μ₯ ν°λ―Έλ μ μΈ)
if command -v tmux &>/dev/null && [[ -z "$TMUX" ]] && [[ "$TERMINAL_EMULATOR" != "JetBrains-JediTerm" ]]; then
tmux attach -t default || tmux new -s default
fi
κ° μ‘°κ±΄μ μλ―ΈλΆν° μ§μΌλ©΄:
command -v tmuxβ tmuxκ° μ€μΉλΌ μμ λλ§ μ€ν.[[ -z "$TMUX" ]]β μ΄λ―Έ tmux μΈμ μμ΄λ©΄$TMUXμ μμΌ κ²½λ‘κ° λ€μ΄ μλ€. μμμ λ attachνλ©΄ μΈμ μ΄ μ€μ²©λλ―λ‘ λ°μ μμ λλ§ μ€ν.[[ "$TERMINAL_EMULATOR" != "JetBrains-JediTerm" ]]β JetBrains IDE λ΄μ₯ ν°λ―ΈλμΌ λλ tmux μλ μ€νμ 건λλ΄λ€. IntelliJΒ·PyCharm λ± JetBrains IDEλ λ΄μ₯ ν°λ―Έλμ λμΈ λ νκ²½λ³μTERMINAL_EMULATOR=JetBrains-JediTermμ λ£μ΄ μ€λ€. μ΄ κ°μΌλ‘ βμ§κΈ IDE λ΄μ₯ ν°λ―ΈλμΈκ°βλ₯Ό νλ³νλ€.
IDE ν°λ―Έλμμ tmuxκ° μ λ©λλ‘ λ¬λ€λ©΄ μ΄ μ‘°κ±΄μ΄ λ°λ‘ κ·Έ λ¬Έμ λ₯Ό λ§λ μ₯μΉλ€.
.zshrcμ tmux μλ μ€νμ λ£μΌλ©΄ JetBrains λ΄μ₯ ν°λ―Έλμ μ΄ λλ§λ€ tmuxκ° μλμΌλ‘ λ μ, IDEκ° κΈ°λνλ μμ μ Έ λμ tmux μΈμ μμ κ°νλ€. IDEμ ν°λ―Έλ μ μ΄(μμ λλ ν 리 μ°λ, λ¨μΆν€ λ±)μλ μΆ©λνλ€.$TERMINAL_EMULATORλ‘ IDE ν°λ―Έλμ κ°μ§ν΄ κ·Έλλ§ μλ μ€νμ λΉΌλ©΄ κΉλνκ² ν΄κ²°λλ€.
μ¬κΈ°κΉμ§λ μ μμ΄λ€. λ¬Έμ λ λ§μ§λ§ μ€μ΄λ€.
1
tmux attach -t default || tmux new -s default
μλλ βdefault μΈμ
μ΄ μμΌλ©΄ λΆκ³ , μμΌλ©΄ λ§λ€μ΄λΌβμ΄λ€. κ·Έλ°λ° μ€μ μΈμ
μ΄λ¦μ΄ defaultκ° μλλΌ 0-defaultλΌλ©΄?
μμΈ β attach -tλ μ΄λ¦μ (κ±°μ) μ νν λ§μΆ°μΌ νλ€
tmux attach -t defaultλ defaultλΌλ νκΉ μΈμ
μ μ°Ύλλ€. κ·Έλ°λ° μ΄μμλ μΈμ
μ 0-defaultλ€. defaultλ‘λ μ΄ μΈμ
μ λͺ» μ°Ύλλ€.
-tμ λ§€μΉ κ·μΉμ μ νν 보면 tmuxλ νκΉ μΈμ
μ μ λμ΄(prefix)λ‘ λ§€μΉνλ€. μ¦ tmux attach -t workλ workspace μΈμ
μ λΆμ μ μλ€. νμ§λ§ 0-defaultλ defaultλ‘ μμνμ§ μμΌλ―λ‘ -t defaultλ‘λ μ λ λ§€μΉλμ§ μλλ€. μ λμ΄ λ§€μΉμ μμμλΆν° λ§μμΌ νλ€.
κ·Έλμ νλ¦μ μ΄λ κ² λλ€.
1
2
3
tmux attach -t default # μ€ν¨ β 'default'λΌλ μ΄λ¦μ μΈμ
μ΄ μμ
|| # κ·Έλμ λ·λΆλΆμΌλ‘ λμ΄κ°κ³
tmux new -s default # λ§€λ² μ 'default' μΈμ
μ μμ±
μ μν λλ§λ€ attachκ° νλ€μ΄λΉνκ³ newλ‘ λΉ μ§λ κ². μ΄κ² λΉ μΈμ
μ΄ κ³μ μμ΄λ μ΄μ λ€.
μ μΈμ
μ΄λ¦μ 0-, 1- κ°μ μ λμ΄κ° λΆλ
μ΄ ν¨μ μ λΉ μ§λ μ νμ μΈ κ²½μ°κ° μΈμ μ λ ¬μ μν΄ μ΄λ¦μ μ«μ μ λμ΄λ₯Ό λΆμ΄λ μ΅κ΄μ΄λ€.
tmux lsμ μΈμ
μ νκΈ°(prefix + s)λ μΈμ
μ μ΄λ¦ μνλ²³μμΌλ‘ μ λ ¬νλ€. μ λ ¬ μμλ₯Ό μ§μ μ§μ νλ μ΅μ
μ΄ μκΈ° λλ¬Έμ, μμλ₯Ό κ³ μ νκ³ μΆμΌλ©΄ μ΄λ¦ μμ λ²νΈλ₯Ό λΆμ΄λ κ² νν κΈ°λ²μ΄λ€.
1
2
3
0-default # νμ 맨 μ
1-workspace # κ·Έλ€μ
2-logs
μ λ ¬μ©μΌλ‘λ μλ²½νκ² λμνλ€. λ¬Έμ λ μ΄ μ λμ΄λ₯Ό μλ attach μ€λν«μ΄ λͺ¨λ₯Έλ€λ κ²λΏμ΄λ€. μ€λν«μ μ¬μ ν μ λμ΄ μλ defaultλ₯Ό μ°Ύκ³ μλ€.
ν΄κ²° β νκΉμ μμ λΌμ΄λΈλ€
ν΅μ¬μ μ΄λ¦μ λ°κΎΈλ κ² μλλΌ, attachν λ μ΄λ¦μ νλμ½λ©νμ§ μλ κ²μ΄λ€.
1
tmux attach || tmux new -s default
tmux attachλ₯Ό νκΉ μμ΄ λΆλ₯΄λ©΄ tmuxλ κ°μ₯ μ΅κ·Όμ μ°λ μΈμ
μ μλμΌλ‘ λΆλλ€. μ΄λ¦μ΄ 0-defaultλ 1-workspaceλ μκ΄μλ€. tmux μλ² μμ²΄κ° μμ λ(λΆν
μ§ν 첫 μ€ν λ±)λ§ attachκ° μ€ν¨νκ³ , κ·Έλ λΉλ‘μ tmux new -s defaultλ‘ μ μΈμ
μ λ§λ λ€.
μ¦ λ κ°μ§κ° λ 립λ κ΄μ¬μ¬λ‘ κΉλνκ² λΆλ¦¬λλ€.
| κ΄μ¬μ¬ | λ΄λΉ |
|---|---|
| μΈμ μ λ ¬ μμ | μΈμ μ΄λ¦μ μ«μ μ λμ΄ (κ·Έλλ‘ μ μ§) |
| μΈμ μ μ | tmux attach (νκΉ μμ) |
μ λ ¬μ© μ λμ΄λ κ·Έλλ‘ λκ³ , βλ§€λ² μ μΈμ
μμ±β λ¬Έμ λ§ μ¬λΌμ§λ€. μ΄λ¦μ νλμ½λ©ν -t defaultκ° μ μΌν λ²κ·Έμλ€.
νΉμ μΈμ μ νμ μ°©μ§νκ³ μΆλ€λ©΄
βμ΅κ·Ό μΈμ βμ΄ μλλΌ νμ κ°μ μΈμ μ λ¨μ΄μ§κ³ μΆλ€λ©΄ λ κ°μ§ μ νμ§κ° μλ€.
μ νν μ΄λ¦μΌλ‘ λΆμ΄κΈ° β λ¨, μ λμ΄ λ²νΈκ° λ°λλ©΄ λ€μ κΉ¨μ§λ€.
1
tmux attach -t 0-default
λλ new-session -Aλ‘ βμμΌλ©΄ λΆκ³ μμΌλ©΄ λ§λ€κΈ°βλ₯Ό ν μ€λ‘ ν©μΉκΈ°. -Aλ λμ μΈμ
μ΄ μ΄λ―Έ μμΌλ©΄ new λμ attachμ²λΌ λμνλ€.
1
tmux new-session -A -s default
μ΄ λ°©μμ νμ defaultλΌλ κ³ μ μ΄λ¦μ μΈμ
νλλ₯Ό μ€κ°λ€. λ°λλ‘ μ¬λ¬ μΈμ
μ μ λμ μΌλ‘ μ€κ°λ©° βκ·Έλ₯ λ§μ§λ§μ μ°λ κ³³βμΌλ‘ λμκ°κ³ μΆλ€λ©΄ νκΉ μλ tmux attachκ° λ§λ€.
κ²μ¦
λ°κΎΌ λ€μλ μ€μ λ‘ νμΈν΄ λ³Έλ€.
- μ ν°λ―Έλ μ°½μ μ°λ€ β κΈ°μ‘΄ μΈμ
(
0-defaultλ±)μ κ·Έλλ‘ λΆλκ°? tmux lsλ‘ λΉ μΈμ μ΄ λ μ΄μ μμ΄μ§ μλμ§ νμΈ.- λͺ¨λ tmuxλ₯Ό λκ³ (λλ μ¬λΆν ν) μ²μ μ΄μμ λλ§ μ μΈμ μ΄ λ§λ€μ΄μ§λμ§ νμΈ.
μ 리
- μ
Έ μμ μλ attachμμ
attach -t <μ΄λ¦>μ νλμ½λ©νλ©΄, μ€μ μΈμ μ΄λ¦μ΄ λ€λ₯Ό λ λ§€λ² μ μΈμ μ΄ μκΈ΄λ€. -tλ μ λμ΄ λ§€μΉμ΄λΌ0-defaultλdefaultλ‘ λͺ» μ°Ύλλ€. μ λ ¬μ© μ«μ μ λμ΄λ₯Ό μ°λ κ²½μ°κ° λνμ ν¨μ .tmux attach(νκΉ μμ) = κ°μ₯ μ΅κ·Ό μΈμ μ λΆκΈ°. μλ²κ° μμ λλ§ μλ‘ λ§λ λ€. μ λ ¬ μ λμ΄ μν¬νλ‘μ°μ μΆ©λνμ§ μλλ€.- κ³ μ μΈμ
νλλ§ μνλ©΄
tmux new-session -A -s <μ΄λ¦>ν μ€μ΄ λ λͺ ννλ€.
κ΄λ ¨ κΈ
- μΈμ Β·μλμ°Β·ν¨λ κΈ°λ³ΈκΈ°μ attach λͺ λ Ήλ€: tmux μ 리본 (Cheat Sheet + μ¬μ© κ°μ΄λ)
- μ¬λ¬ μΈμ μ μ€ν¬λ¦½νΈλ‘ ν λ²μ μΈν νκΈ°: tmux μ΄κΈ° μ μ μ© μΈμ /μλμ°/ν¨λ μ€ν¬λ¦½νΈ