우분투에서 작업하다 보면 한 번에 터미널을 여러 개 켜놓아야 할 때가 있다.

 

예를 들어 실험을 여러 서버에서 돌린다거나,

 

한쪽에 코드를 열어놓고 다른 한쪽에서 해당 코드를 참조한다거나.

 

 

그런데 단순히 터미널을 여러 개 틀어놓는 것은 생각보다 불편하다.

 

가장 큰 이유는 창간의 이동을 키보드로 하기 썩 편하지 않다는 것인데,

 

alt + tab 신공을 사용해서 어찌어찌 해결한다 해도

 

레이아웃이 이쁘지 않다든지, 더 많은 창을 띄우려면 머리가 많이 복잡해진다든지 하는 문제가 있다.

 

이를 해결하기 위한 많은 방법이 있지만, 내 기준으로는 티먹스 tmux가 가장 편하고 용도에 맞는 것 같다.

 

다른 블로그에도 관련된 많은 포스트가 있지만,

 

직접 사용해보며 가장 많이 썼던 핵심 명령어들만 정리해보려고 한다.

 

 

일반적인 우분투 프로그램과 같이, 아래 명령어로 설치한다.

$ sudo apt-get install tmux

실행하는 방법은 몹시 간단하다.

$ tmux

tmux 실행 화면.

순정 bash에는 없던 상태 표시줄이 생겼다.

 

tmux의 대부분의 기능은 prefix라는 특정 커맨드와 후속 명령어를 연속해서 입력하는 것으로 실행할 수 있다.

 

예를 들어, 기본 prefix는 <ctrl + b>이고 현재 창을 좌우로 분할하는 명령은 % 이다.

 

따라서 <[ctrl] + b>와 %를 순서대로 입력하면 아래와 같은 결과를 얻을 수 있다.

창이 좌우로 분할된 모습.

가끔 WSL (Windows Subsystem for Linux)을 통해 tmux를 실행하는데,

 

WSL과 tmux의 호환성은 썩 좋은 편이 아니다.

 

가운데의 세로 선이 조금 잘려 나온다거나, 나중에 설명하겠지만 특정 상황에서 글자가 조금 깨지기도 한다.

 

 

아무튼, tmux에서는 저렇게 구분된 하나의 터미널을 pane이라고 하고,

 

pane과 관련된 명령어들은 아래와 같다.

 

여기서 -로 구분된 커맨드들은 순서대로, <a + b>는 a와 b를 동시에 입력한다는 의미이다.

  • 현재 pane을 좌우로 분할.
    prefix - %
  • 현재 pane을 상하로 분할.
    prefix - "
  • pane 사이에 커서 (focus) 이동.
    prefix - 방향키
  • 현재 pane 닫기. pane에 커서가 있을 때 prefix 없이 <[ctrl] + d>로도 가능하다.
    pane을 닫는 경우, 해당 pane에서 실행 중인 프로그램은 날아간다.
    prefix - x
  • 해당 방향으로 현재 pane을 밀어냄 (크기 변경).
    alt 대신 ctrl로 더욱 섬세한 조정이 가능하다.
    prefix - <[alt] + 방향키>

몇 번 해보면 금세 적응이 된다.

 

tmux에서는 저런 pane들이 하나 이상 놓여있는 창을 window라고 한다.

 

아래 상태 표시줄에는 선택된 윈도우*가 몇 번인지도 나와있다.

 

예를 들어 위 스크린샷은 pane이 2개 있는 0번 윈도우가 선택되어 있는 경우라고 볼 수 있다.

 

window와 관련된 명령어들은 아래와 같다.

  • 새로운 window를 추가.
    prefix - c
  • n번 window로 이동 (n은 숫자).
    prefix - n
  • n번 window로 이동 (n이 10 이상). 총 4단계를 거쳐야 한다. 웬만하면 10개 이하의 window를 쓰자.
    prefix - ' - n - [enter]
  • 현재 window 닫기. pane이 하나만 있는 window의 경우, prefix 없이 <[ctrl] + d>로도 가능하다.
    prefix - &
  • 현재 윈도우 이름 수정. window가 3개만 되어도 각각의 역할이 헷갈리기 때문에, 은근히 중요한 기능이다.
    prefix - , - [이름 입력] - [enter]

3개의 윈도우를 만든 모습. 현재 선택된 윈도우*는 2번.

마지막으로, tmux에서는 1개 이상의 window를 모아놓은 객체를 session이라고 부른다.

 

session의 이름은 default가 0이고, tmux 상태 표시줄의 제일 왼쪽 [ ] 안에 적혀있다.

 

예를 들어 첨부한 캡처 화면의 경우는 1이 된다.

 

session을 여러 개 쓰는 경우 여러 개의 창을 띄워놓고 각각의 창에 다른 session을 만들면 되기 때문에

 

session 관련 명령어는 잘 쓰지 않는 편이다.

 

개인적으로 느낀 필수적인 session 관련 명령어들은 아래와 같다.

  • session detach 시키기. 해당 session에서 돌던 모든 프로그램들은 계속해서 돈다.
    prefix - d
  • detach 시킨 session 다시 접속하기. 해당 명령어는 터미널에서 입력한다.
    SESSION_NAME은 위에서 언급했던 session 이름.
$ tmux attach -t SESSION_NAME
  • session 종료하기. 생각보다 절차가 귀찮다. 불의의 사고로 session을 날려버리는 걸 막기 위해서?
    당연한 말이지만 session을 종료하면 해당 session의 모든 프로그램이 날아간다.
    마지막 window의 마지막 화면에서 prefix 없이 <[ctrl] + d>
    혹은 detach 후 터미널에서 아래와 같이 입력. SESSION_NAME은 위에서 언급했던 session 이름.
$ tmux kill-session -t SESSION_NAME

 

이 정도면, tmux 전체 기능의 75% 정도는 문제없이 사용할 수 있는 것 같다.

 

글이 너무 길어지면 번잡하니까 사용하며 조금 생각이 필요한 기능들 15%는 다음 글에 써야지.

 

다음 글:

2021.04.28 - [잡기술/Ubuntu] - 티먹스 tmux 사용해서 터미널 여러 개 띄우기 (2) - 스크롤, .tmux.conf

 

티먹스 tmux 사용해서 터미널 여러 개 띄우기 (2) - 스크롤, .tmux.conf

이전 글: 2021.04.26 - [잡기술/Ubuntu] - 티먹스 tmux 사용해서 터미널 여러 개 띄우기 (1) 티먹스 tmux 사용해서 터미널 여러 개 띄우기 (1) 우분투에서 작업하다 보면 한 번에 터미널을 여러 개 켜놓아야

sanghyun.tistory.com

나머지 10%는 외우기보다 사용하며 필요할 때 직접 찾아보는 게 나은 것 같다.

+ Recent posts