티스토리 뷰

Terminal

macOS에서 tmux 사용법

editor752 2019. 12. 9. 14:06

tmux란

우선 tmux는 터미널(콘솔)에서 사용하는 프로그램이다. GUI 사용자는 해당 사항이 없으므로 여기에서 뒤로기기를 누르는 데 주저함이 없어야겠다. 그렇지만 하나의 터미널에서 복수의 창을 사용하고 싶은 사람이라면 제대로 찾은 것이다.
tmux는 단일 단말기 창 또는 원격 터미널 세션 안에서 별도로 복수의 터미널 세션에 액세스할 수 있도록 여러 가상 콘솔을 다중화하는데 사용할 수 있는 응용 소프트웨어이다. 이 응용 프로그램은 명령어 인터페이스로부터 다수의 프로그램을 처리하고 유닉스 셸로부터 프로그램을 분리하는 데에 유용하다.

tmux는 크게 세 부문으로 나뉜다.

  1. session(세션): tmux 실행하는 기본 단위로, 여러 윈도우로 구성된다. 가상화된 하나의 콘솔을 생성한 것으로 볼 수 있다.
  1. window(윈도우): 터미널 화면으로 세션 내에서 탭처럼 사용이 가능하다.
  1. pane(팬): 하나의 윈도우 내에서의 화면 분할

따라서 tmux를 사용하기 위해서는 <터미널>에서 <tmux 세션 실행> - <세션 내 윈도우 생성>(세션의 실행과 함께 0번 윈도우는 자동으로 생성됨) - <윈도우로 작업> or <추가 윈도우 생성 및 작업> or <pane로 세분 및 작업>하는 절차를 밟게 된다.

설치

OS X의 Homebrew로 설치한다.

1
2
brew install tmux
 
cs

설치가 완료되면 tmux -V를 실행시켜 보자. 제대로 출력되면 성공이지만 이런 에러가 뜰 수도 있다.

1
2
3
4
dyld: Library not loaded: /usr/local/lib/libevent-2.0.5.dylib
...
Trace/BPT trap5
 
cs

이 문제는 아마도 설치되어 있는 libevent 라이브러리와 tmux가 필요로 하는 libevent의 버전이 달라서 생기는 문제인 것 같다. 해결 방법은 기존에 설치되어 있는 libevent를 제거하고 tmux를 설치하는 것이다. tmux를 설치할 때 올바른 버전의 libevent가 같이 설치되기 때문이다.

1
2
3
brew uninstall libevent
brew install tmux
 
cs

사용법

세션 관련

  • 세션 생성 1

1
2
tmux new -s session_name
 
cs

가장 기본적인 세션 생성 방법이다. 새로운 세션을 생성하고 해당 세션의 이름을 지정하게 된다. 이 이름은 세션 목록을 확인할 때 유용하므로 자신의 필요에 맞도록 이름을 짓자. session_name 자리에 원하는 이름을 넣으면 된다.

  • 세션 생성 2

1
2
$tmux new -s session_name -n window-name
 
cs

다음은 세션의 생성과 이름 짓기에 더해 윈도우의 이름까지 지정하는 방식이다. 여러 개의 프로젝트를 함께 다룰 경우 유용할 것 같다. 하지만 내 경우에는 실제로 이렇게 윈도우 이름까지 지정해서 사용하는 경우는 적었다.

  • 세션 종료

    1
    2
    $exit
     
    cs

생성을 했으니 정상적으로 끝낼 수 있어야겠지? 종료하는 방법은 세션에서 exit로 가능하다.

  • 세션 중단하기

1
2
(Ctrl + b)  d
 
cs

세션 종료와 세션 중단을 구별해야 한다. 세션 종료는 말 그대로 세션을 당는 것으로 콘솔의 접속을 끊는 것이다. 그러니 해당 세션을 다시 불러오거나 할 순 없다. 반면에 세션 중단은 다른 작업을 위해 사용하던 세션에서 빠져나오는 경우이다. 지정된 메터키(.tmux_conf에서 따로 지정하지 않았다면 Ctrl + b 조합. 정식 명칭은 prefix임)를 누른 후에 d키를 연속해서 누르면 된다. 나는 .tmux.conf에서 메터키를 Ctrl + a로 바꾸어 쓰고 있다. 이때의 ddetach의 두문자이다. tmux의 세션은 중단되고 기본 터미널로 빠져 나오게 된다. 따라서 원한다면 이전 세션을 다시 불러와 작업을 이어갈 수 있다. 이를 위해 다음에 살펴볼 tmux lstmux attach가 사용된다.

  • 생성된 세션 목록 확인

1
2
$tmux ls
 
cs

세션 목록은 터미널의 명령어 ls를 그대로 사용할 수 있다. 물론 터미널의 기본 ls와 구별하기 위해서는 tmux ls 형태로 사용해야 한다.

  • 목록에서 세션 선택하여 활성화하기

1
2
$ tmux attach -t session_number (or session_name)
 
cs

중단했던 세션을 다시 사용하는 경우 tmux attach -t를 사용한다. tmux ls로 확인되는 세션 이름이나 세션 번호(이름을 지정하지 않았을 때 자동으로 부여됨)를 session_number 자리에 입력하면 된다.

  • 외부에서 윈도우 종료

1
2
tmux kill-session -t session_number (or session_name)
 
cs

중단해 놨던 세션을 종료하고 싶은 경우도 있을 것이다. 이 경우에는 tmux kill-session -t를 이용한다. 이 명령 다음에 종료하고자 하는 세션 번호나 이름을 입력하면 된다.

  • 현재 세션 이름 변경

1
(Ctrl + b) + $
cs

사용 빈도가 낮긴 하지만 현재 사용 중인 세션의 이름을 바꾸고 싶은 경우도 있을 것이다. 이럴 때는 메터키(Ctrl + b 다음에 $를 입력한다. 그러면 화면 아래 상태바가 편집 상태로 활성화되며 이곳에서 다른 이름으로 수정한 후 엔터를 누르면 바로 반영된다.

여기까지 tmux의 세션을 생성한 후 중단하거나 종료해 봤다. 세션을 중단하였을 경우 생성된 목록을 확인하여 다시 해당 세션을 불러들이는 것 등도 함께 알아봤다.

윈도우 관련

다음으로 세션 안에의 탭과 유사한 기능인 윈도우(window)를 위한 명령어들을 살펴 보자.

  • 새 윈도우 생성

1
2
(Ctrl + b) c 
 
cs

세션 안에서 메터키(ctrl + b 조합)을 누르고 이어서 c를 누르면 새 윈도우가 생성된다. 기존의 윈도우에 더해 윈도우가 하나 더 생겼으니 이제 윈도우 간 이동 기능이 필요해진다.

  • 윈도우 간 이동 1

1
2
3
(Ctrl + b) window_number 
 
 
cs

세션 안에서 메터키(ctrl + b 조합)을 누르고 이어서 윈도우 번호를 입력하면 해당 윈도우로 전환이 된다. 윈도우는 화면 아래의 상태바에서 확인할 수 있다. 상태바에 뜨는 윈도우 이름 뒤에 *가 붙은 것이 있는데 이게 현재 사용 중인 윈도우의 이름이다.

  • 윈도우 간 이동 2

1
2
(Ctrl + b) n or p or l 
 
cs

윈도우의 번호를 특정하지 않고 현재 윈도우에서 앞뒤 윈도우로 이동할 경우 사용할 수 있는 명령어이다. 메터키(ctrl + b) 다음에 n(ext)이나 p(revious)l(ast)을 입릭하면 된다. p는 이전 윈도우로 이동하며 n은 다음 윈도우로 이동하게 된다. l은 직전에 사용했던 윈도우로 이동하게 된다.

  • 현재 윈도우명 변경

1
2
(Ctrl + b) + ,
 
cs

이 경우도 사용 빈도가 낮긴 하지만 현재 사용 중인 윈도우의 이름을 바꾸고 싶은 경우도 있을 것이다. 이럴 때는 메터키(Ctrl + b 다음에 ,를 입력한다. 그러면 화면 아래 상태바가 편집 상태로 활성화되며 이곳에서 다른 이름으로 수정한 후 엔터를 누르면 바로 반영된다.

  • 윈도우 닫기

1
2
3
(Ctrl + b) & - 현재 윈도우를 kill
$exit 
 
cs

사용하고 있는 윈도우를 종료하려면 메터키 다음에 &를 입력한다. 이는 해당 윈도우에서 exit를 입력하는 것과 같으면 윈도우가 한 개뿐인 경우에는 세션이 종료된다.

팬 관련

  • 윈도우 수직 분할(수직으로 나뉜 팬로 분할)

1
2
(Ctrl + b) % - 수직으로 분할
 
cs

사용하고 있는 윈도우를 수직으로 분할하려면 메터키(Ctrl + b) 다음에 %를 입력하면 된다. .tmux.conf에서 |으로 바꾸어 쓰고 있는데 보다 직관적이다.

  • 윈도우 수평 분할(수평으로 나뉜 팬로 분할)

1
(Ctrl + b) " - 수평으로 분할
cs

사용하고 있는 윈도우를 수평으로 분할하려면 메터키(Ctrl + b) 다음에 "를 입력하면 된다. .tmux.conf에서 -으로 바꾸어 쓰고 있는데 보다 직관적이다.

  • 각 팬의 번호 표시와 이동

1
2
(ctrl + b) q 
 
cs

팬 간 이동을 위해서 각 팬의 고유 번호를 확인하는 방법이다. 메터키 입력 후에 q를 입력하면 분할된 각 팬 위로 아라비아숫자의 번호가 뜬다. 이 번호를 확인한 후 숫자를 입력하면 입력 포커스가 해당 팬로 이동하게 된다.

  • 팬 간 이동

1
2
3
(ctrl + b) o - 다음 pane으로 이동
(ctrl + b) 방향키
 
cs

팬 간 이동은 메터키 다음에 o를 입력해도 된다. 팬 생성 순서에 따라 순차적으로 입력 포커스가 바뀌게 된다. 또 다른 방법으로는 메터키 다음에 화살표 키를 입력하여 원하는 팬로 이동할 수 있다. 연속적인 이동은 불가능하면 이동할 때마다 메터키를 눌러줘야 한다.

  • 팬 종료

    1
    2
    3
    (ctrl + b) x - 현재 pane을 kill 
    $exit
     
    cs

현재 사용 중인 팬을 종료한다. 메터키 다음에 x를 누르면 화면 하단 상태바에 정말 삭제할지 다시 한번 확인하게 된다. 이때 y(es)를 누르면 팬이 종료된다. 해당 팬에서 exit를 입력해도 팬이 종료된다.

  • 팬 확대

1
2
(ctrl + b) z
 
cs

여러 개의 팬 중 원하는 팬을 전체 윈도우 크기로 사용하고 싶을 경우가 있다. 이때에 메터키 다음에 z를 입력하면 팬이 전체 윈도우 크기로 확대된다. 다시 이전 분할된 상태로 되돌아가기 위해서는 이 키를 다시 누르면 된다.

  • 윈도우 및 팬 이동

1
2
(ctrl + b) w
 
cs

윈도우나 팬을 이동하는 방법이 구별되어 있는데 이를 한꺼번에 할 수 있는 방법이 있다. 메터키 다음에 w를 입력하면 현재 활성화된 윈도우 및 팬 목록을 아래와 같이 확인할 수 있으며, 화살표 키로 원하는 윈도우나 팬로 이동할 수 있다.


'Terminal' 카테고리의 다른 글

YCM: ycmd server (shut down) 에러 문제 해결  (3) 2020.07.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
05-19 01:37