tmux는 Windows에서 win+방향키 로 화면을 분할해서 사용했던 것과 마찬가지로 여러 개의 창을 열어놓고 여러 작업을 동시에 할 수 있도록 하는 SW입니다. (tmux는 shell이 아닙니다)
예시로, 파일을 실행해야 하는데 파일 하나 돌리는 시간이 오래 걸리는 경우 두 개의 창을 띄워놓고 창 하나에는 실행 시켜놓고 나머지 한 창에서는 자유롭게 다른 작업을 할 수 있습니다.
또한, tmux는 보통 server 접속이 끝나거나 terminal을 종료하게 되면 실행이 중단되지 않도록 detach/attach 기능을 갖고 있어서 오래 걸리는 코드를 돌릴 때에 백그라운드에서 계속 실행되도록 할 수 있다는 큰 장점도 있습니다.
tmux에서 우리가 알아야할 큰 개념 세 가지는 session, window, pane입니다.
- session = tmux의 가장 큰 실행 단위 = Windows에서는 데스크톱 1, 2, 3, ...
- window = tmux 터미널 화면, 한 세션 내에서 tab하면서 움직일 수 있음 = Windows에서 Alt+Tab 할 수 있는 여러 실행 창들 중 하나
- pane = 하나의 window 내에서 창을 분할 할 수 있음 = Windows에서 win+방향키 로 여러 실행 앱들이 분할되는 것과 같음
1. tmux 설치
MacOS를 사용하시는 분들은 brew를, Ubuntu를 사용하시는 분들은 sudo apt-get을 이용하시면 됩니다 :)
brew install tmux # for MacOS
sudo apt-get install tmux # for Ubuntu
이제 tmux를 사용할 준비가 끝났습니다!
2. tmux 명령어 정리
tmux 명령어는 처음 세팅은 ctrl+b를 누른 상태에서 동작합니다. 동시에 누르는 건 아니고 ctrl+b를 누른 다음, 원하는 명령에 해당하는 key를 눌러주시면 됩니다.
ctrl + b, <key>
2.1 Session 관련 명령어
# 새로운 Session 만들기 - session 이름은 설정하지 않고 (0,1,2,.. 순서로 생성)
tmux
# 새로운 Session 만들기 - session 이름 = (session_name)
tmux new -s (session_name)
# Session name 수정
ctrl + b, $
# 원하는 이름 적고 Enter
# Session 종료 - session 사라짐
exit or ctrl + d # 주의! window나 pane이 열려있을 때는 pane -> window 순으로 하나씩 닫힘
# Session 닫기(detach) - 백그라운드에서 계속 돌아감(server 접속이 끊겨도 계속 돌아감)
# 매우 유용하게 사용할 수 있습니다 - tmux의 엄청 큰 장점
ctrl + b, d
# Session 목록 확인
tmux ls
# Detached session 다시 열기(attach)
tmux at -t (session_name)
# (session_name)은 tmux ls로 확인
2.2 Window 관련 명령어
# 새 window 생성 - 하단 바에 현재 열려있는 window의 목록이 나와있고 현재 window는 색 처리 됨
ctrl + b, c
# window 이름 변경
ctrl +b, , # comma가 key
### window 간 이동 - 하단 바에 숫자로 window의 순서가 매겨져있음
# 하단 바 상에서 다음(next) window로 이동
ctrl + b, n
# 하단 바 상에서 전(previous) window로 이동
ctrl + b, p
# 특정 window로 이동 - 하단 바의 window 이름 옆 숫자(num)를 key로 입력
ctrl + b, (num)
# 모든 seesion들의 hierarchy를 tree 구조로 보여줌
ctrl + b, w # Esc 하면 이전 상태로 돌아옴
2.3 Pane 관련 명령어
# 화면 세로 분할 - 좌우
ctrl + b, %
# 화면 가로 분할 - 상하
ctrl + b, "
# pane 간 이동 - 화면에 나오는 번호(num)로 이동
ctrl + b, q, (num)
# pane 간 이동 - 방향키로 이동
ctrl + b, (방향키)
# 현재 pane을 zoom - 한 번 더 하면 다시 zoom out
ctrl + b, z
# pane size 조절 - size를 입력하지 않으면 L, R, U, D 방향을 한 cell 키워줌
ctrl + b, : # 명령어 모드 진입
resize-pane -L (size) # left
resize-pane -R (size) # right
resize-pane -U (size) # up
resize-pane -D (size) # down
# pane layout 변경 - pane 갯수에 맞게 여러 다양한 layout 보여줌 (여러 번 할 수록 변함)
ctrl + b, (spacebar)
2.4 tmux configure 수정
현재 저는 편리한 사용을 위해 ctrl과 capLk key의 위치를 바꿔서 사용하고 있어서 tmux prefix인 ctrl+b도 ctrl+s로 바꿔서 사용하고 있습니다.
shell customizing 했을 때 /.zshrc 를 수정했던 것처럼, tmux는 /.tmux.conf 파일을 생성하여 수정해주어야 합니다.
vim ~/.tmux.conf # /.tmux.conf 파일 생성
# Vim insert mode
i
... # 지금부터는 /.tmux.conf 파일에 입력
# Key binding - prefix ctrl + b -> ctrl + s
set-option -g prefix C-s
kunbind-key C-b
bind-key C-s send-prefix
# split window like Vim - ctrl + b, v(vertical), ctrl + b, s(horizontal)
bind s split-window -v
bind v split-window -h
# Mouse mode - 마우스 사용 가능
set -g mouse on
...
# /.tmux.conf 저장하기
Esc, :wq
3. 글을 마치며
오늘은 Linux 사용할 때 편한 tmux의 기능들과 여러 명령어들에 대해 살펴 보았습니다.
유용하게 사용하시길 바라며 더 유익한 글로 찾아뵙겠습니다 :)
틀린 부분이 있다면 댓글로 남겨주세요!
- Reference
간략하게 보는 tmux 설치와 명령어 사용법,
soft.plusblog.co.kr/19
'Linux' 카테고리의 다른 글
Terminal Customizing & Linux Shell (0) | 2021.02.24 |
---|---|
Windows 10 에서 Linux 환경 구축하기 (3) | 2021.02.24 |