tmux 란?
tmux는 터미널 멀티플렉서입니다. 멀티플렉서는 여러 개의 입력 중 하나를 선택하여 출력되도록 하는 회로를 말하는데, 줄여서 mux라고 부릅니다. 그래서 tmux는 바로 위에 스크린샷처럼 여러 터미널을 동시에 띄워두고 사용할 수 있는 애플리케이션입니다. 리눅스나 MacOS에서 사용할 수 있으며, 아쉽지만 윈도우에서는 사용할 수 없습니다. ( ConEmu가 비슷하다고 합니다만, 사용해보지는 않았습니다. )
tmux/tmux
tmux source code. Contribute to tmux/tmux development by creating an account on GitHub.
github.com
기본 개념.
tmux사용법을 알기 위해서는 다음 4가지는 알고 있어야 합니다.
1. 세션 ( session )
tmux는 프로세스들이 실행되는 tmux 서버와 접속해서 사용하는 tmux 클라이언트로 나뉘는데, 이 때 서버에서 실행되는 프로세스를 세션이라고 할 수 있습니다. 이 세션에는 한 개 이상의 tmux 클라이언트에서 접속할 수 있어서, 같은 화면을 보며 동시에 작업을 할 수도 있습니다. 각 세션은 이름 가지고 구별합니다.
2. 윈도우 ( window )
윈도우는 웹브라우저의 탭과 유사합니다. 세션 안에 포함되며 세션은 1개 이상의 윈도우와 연결됩니다. 윈도우는 이름 대신 인덱스로 구분합니다. 윈도우를 생성한 순서대로 0번부터 번호가 부여됩니다.
3. 패널 ( panel )
패널은 윈도우에 포함되며, 윈도우 내에 1개 이상이 있습니다. 패널이 여러 개일 경우, 여러 개의 패널이 동시에 분할되어 보입니다. 이 패널이 실제 터미널이 구동되는 곳입니다.
4 명령 키( prefix key )
모든 명령을 입력하기 전에 명령키를 입력해 주어야 합니다. 마치 vi에서 명령을 입력하기 전에 ESC를 누르는 것과 같습니다. 기본값은 Ctrl + b이며 옵션에서 변경할 수 있습니다. 여기서는 기본 값을 기준으로 설명합니다.
자주 쓰는 명령어.
간혹 명령어가 생각나지 않으면 명령키 + ? 로 할 확인할 수 있습니다.
1. 세션
세션 만들기
$ tmux new
OR
$ tmux new -s my_tmux
tmux new 라는 명령으로 새로운 세션을 만들 수 있습니다. 이때 아무런 옵션이 없을 경우 0 부터 순차적으로 명명 되게 됩니다. 이는 단순히 이름일 뿐 인덱스는 아닙니다. -s 옵션으로 생성할 세션의 이름을 지정할 수 있는데, 각 세션의 이름을 정해두면 나중 구분하기 좋습니다. 세션이 만들어지면, 0번 윈도우도 만들어지며 패널도 생성됩니다. 그리고 새로 만들어진 세션에 접속된 상태가 됩니다.
세션 나가기 ( detach )
세션에서 어플리케이션을 구동하고 세션 밖으로 나갈 수 있습니다. 이는 마치 백그라운드에서 애플리케이션을 구동하는 것처럼 사용할 수도 있습니다. 세션에서 나갈 때는 Ctrl + b, d 를 차례로 누르면 됩니다.
세션 접속하기 ( attach )
실행 중인 세션에 접속하기 위해서는 tmux attach -t [session] 명령을 사용합니다. 세션 이름을 모른다면 tmux ls로 현재 실행중인 세션을 조회할 수 있습니다.
# List Sessions
$ tmux ls
# attach my_tmux session
$ tmux attach -t my_tmux
2. 패널
패널 나누기
패널을 나누는 방법은 가로로 또는 세로로 나눌 수 있습니다. 나누어진 패널에서 다시 가로 혹은 세로로 나눌 수 있습니다.
- 가로로 나누기 Ctrl + b, "
- 세로로 나누기 Ctrl + b, %
패널 간의 이동
나누어진 패널간의 이동은 Ctrl + b, 방향키로 할 수 있습니다. 이때 Ctrl + b키를 누른 채 방향키를 누르면 패널의 크기를 조절할 수 있습니다.
패널 삭제
Ctrl + b, x 로 패널을 삭제할 수 있습니다. 이때 하단에 삭제 여부를 한번 더 묻습니다.
3. 윈도우
윈도우 생성 :
Ctrl + b, c 를 이용해서 윈도우를 생성합니다. 생성된 윈도우는 차례로 1, 2.. 인덱스를 가집니다. ( 0번 인덱스는 세션 생성과 동시에 생성됩니다. )
윈도우 이동 :
Ctrl + b, [index of window] 를 이용해 원하는 윈도우로 바로 이동할 수 있습니다.
위의 스크린샷에서 윈도우는 0, 1, 2 세 개가 있습니다. 현재 화면에 보이는 윈도우는 * 표시가 된 1번 윈도우입니다. 2번 윈도우로 이동하려면 Ctrl + b, 2 를 차례로 입력하면 됩니다.
윈도우 삭제 :
패널의 삭제와 마찬가지로 Ctrl + b, x 입니다. 현재 선택된 패널이 있는 경우 패널이 종료되며 종료되는 패널이 마지막이라면 윈도우가 삭제됩니다. ( 마찬가지로 윈도우가 삭제되는 데 그 윈도우가 세션의 마지막이라면 세션이 삭제됩니다. )
4. 복사. 붙여 넣기. 스크롤
tmux 를 사용할 때 가장 어려웠던 부분입니다. tmux에서는 출력이 패널의 크기를 넘어갈 경우, 확인하기가 어렵습니다. 패널에 스크롤이 생기지 않기 때문입니다. 이때 사용하는 것이 복사 모드입니다.
복사 모드는 Ctrl + b, [ 버튼으로 시작합니다. 복사 모드가 되면 방향 키나 page up/down으로 내용을 스크롤할 수 있습니다. 그리고 복사 모드의 종료는 q를 누르면 됩니다.
복사 모드에서 복사할 텍스트는 Ctrl + b, space를 눌러서 선택을 시작합니다. 이후 방향키 혹은 page up/down을 통해서 복사할 텍스트를 선택하고 복사 모드를 종료한 다음 내용을 붙여 넣을 곳으로 이동해서 Ctrl + b, ] 를 이용하여 붙여 넣습니다.
복사 모드에서 혼동하기 쉽고, 불편한 게 있는데, tmux에서 복사를 하는 경우, 시스템의 클립보드를 이용하지 않는다는 점입니다. 따라서 tmux에서 복사한 내용을 다른 애플리케이션에서 사용할 수 없습니다. 예를 들어보면 tmux에서 복사 모드를 통해서 복사한 내용은 노트패드 혹은 IDE에 붙여 넣을 수 없습니다. tmux 복사 모드에서 복사한 내용은 별도의 공간에 저장되며, tmux세션 내에서만 사용 가능합니다. 그래서 저는 복사 모드는 스크롤하여 지나간 내용을 다시 확인할 때만 주로 사용합니다.
끝