티스토리 뷰
tmux란
우선 tmux는 터미널(콘솔)에서 사용하는 프로그램이다. GUI 사용자는 해당 사항이 없으므로 여기에서 뒤로기기를 누르는 데 주저함이 없어야겠다. 그렇지만 하나의 터미널에서 복수의 창을 사용하고 싶은 사람이라면 제대로 찾은 것이다.
tmux는 단일 단말기 창 또는 원격 터미널 세션 안에서 별도로 복수의 터미널 세션에 액세스할 수 있도록 여러 가상 콘솔을 다중화하는데 사용할 수 있는 응용 소프트웨어이다. 이 응용 프로그램은 명령어 인터페이스로부터 다수의 프로그램을 처리하고 유닉스 셸로부터 프로그램을 분리하는 데에 유용하다.
tmux는 크게 세 부문으로 나뉜다.
- session(세션): tmux 실행하는 기본 단위로, 여러 윈도우로 구성된다. 가상화된 하나의 콘솔을 생성한 것으로 볼 수 있다.
- window(윈도우): 터미널 화면으로 세션 내에서 탭처럼 사용이 가능하다.
- 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 trap: 5
|
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 |
다음은 세션의 생성과 이름 짓기에 더해 윈도우의 이름까지 지정하는 방식이다. 여러 개의 프로젝트를 함께 다룰 경우 유용할 것 같다. 하지만 내 경우에는 실제로 이렇게 윈도우 이름까지 지정해서 사용하는 경우는 적었다.
-
세션 종료
12$exitcs
생성을 했으니 정상적으로 끝낼 수 있어야겠지? 종료하는 방법은 세션에서 exit
로 가능하다.
-
세션 중단하기
1
2
|
(Ctrl + b) d
|
cs |
세션 종료와 세션 중단을 구별해야 한다. 세션 종료는 말 그대로 세션을 당는 것으로 콘솔의 접속을 끊는 것이다. 그러니 해당 세션을 다시 불러오거나 할 순 없다. 반면에 세션 중단은 다른 작업을 위해 사용하던 세션에서 빠져나오는 경우이다. 지정된 메터키
(.tmux_conf
에서 따로 지정하지 않았다면 Ctrl
+ b
조합. 정식 명칭은 prefix
임)를 누른 후에 d
키를 연속해서 누르면 된다. 나는 .tmux.conf
에서 메터키를 Ctrl + a
로 바꾸어 쓰고 있다. 이때의 d
는 detach
의 두문자이다. tmux의 세션은 중단되고 기본 터미널로 빠져 나오게 된다. 따라서 원한다면 이전 세션을 다시 불러와 작업을 이어갈 수 있다. 이를 위해 다음에 살펴볼 tmux ls
와 tmux 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
를 입력해도 된다. 팬 생성 순서에 따라 순차적으로 입력 포커스가 바뀌게 된다. 또 다른 방법으로는 메터키 다음에 화살표
키를 입력하여 원하는 팬로 이동할 수 있다. 연속적인 이동은 불가능하면 이동할 때마다 메터키를 눌러줘야 한다.
-
팬 종료
123(ctrl + b) x - 현재 pane을 kill$exitcs
현재 사용 중인 팬을 종료한다. 메터키 다음에 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
- QComboBox
- Python
- 북한말
- 백준
- words
- books
- django
- Tistory
- 어원
- baekjoon
- locallibrary
- 유래
- QLabel
- MacOS
- QtDesigner
- 리찬규
- word
- BOJ
- tips
- 소수
- C
- QGridLayout
- 리규찬
- setText()
- QLineEdit
- PyQt5
- python3
- Mac
- judge
- NK
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |