tmux — свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. tmux может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к tmux, находящемуся в фоне. tmux является штатным мультиплексором терминалов операционной системы OpenBSD. Программа tmux задумывалась как замена программы GNU Screen.

Отличительными особенностями являются:

  • мощный, последовательный, хорошо задокументированный и простой скриптовый командный интерфейс
  • окно может быть разбито вертикально и горизонтально на подокна (регионы)
  • "подокна" (регионы, фреймы) можно легко двигать, изменять размер и помещать в один из четырёх "макетов"
  • поддержка UTF-8, и 256 цветов
  • копирование и вставка с несколькими буферами (несколько независимых буферов обмена)
  • интерактивные меню для выбора окон, сессий или клиентов
  • блокировка терминала: ручная или по таймауту
  • чистая, и легко расширяемая база кода под BSD лицензией, находящаяся в активной разработке
  • экономное расходование оперативной памяти
  • высокая скорость работы
  • два варианта комбинаций клавиш: стиль vi и emacs
  • клиент-серверная архитектура, при которой окна выполняют роль объектов, которые могут одновременно подключаться к нескольким сессиям, перемещаться между ними и просматриваться с разных клиентов (терминалов)

«Tmux5» участника wiki Nicholas Marriott - http://tmux.sourceforge.net/tmux5.png. Под лицензией BSD с сайта Википедия - https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Tmux5.png#/media/File:Tmux5.png «Tmux5» участника wiki Nicholas Marriott - http://tmux.sourceforge.net/tmux5.png. Под лицензией BSD с сайта Википедия.

Cессия - краеугольный камень tmux

При старте tmux создаёт новую сессию с единственным окном и отображает её на экране. В статусной строке в самом низу экрана отображается информация о текущей сессии; эта же строка используется для ввода команд tmux’а.

Сессия tmux — это совокупность псевдо-терминалов, находящихся под управлением tmux’а. К каждой сессии привязаны одно или более окон. Экран может быть занят как только одним окном, так и мозаикой из нескольких окон, каждое из которых соответствует одному псевдо-терминалу.

Несколько экземпляров tmux могут быть присоединены к единственной сессии, а в одной сессии может быть неограниченное количество окон. После закрытия всех сессий работа tmux прекращается.

В tmux все сессии отображаются клиентом и управляются одним и тем же сервером. Сервер и каждый клиент являются отдельными процессами, взаимодействие между ними происходит через UNIX-сокеты в /tmp.

Пример такого сокета:

[gz@portal ~]$ ls -lA /tmp/shared
srwxrwx--- 1 gz gz 0 Feb  7 09:53 /tmp/shared
[gz@portal ~]$

Инсталяция

tmux присутствует практически в репозитариях всех популярных Linux и во многих популярных ОС.

OS X

  • если вы используете Homebrew:
$ brew install tmux
  • если же вы используете MacPorts:
$ sudo port install tmux

Debian-like дистрибутивы Linux

$ sudo apt-get install tmux

RedHat-like дистрибутивы Linux

# yum install tmux

FreeBSD, установка из портов

# cd /usr/ports/sysutils/tmux && make install clean && rehash

Gentoo linux

# emerge --ask tmux

Любителей собирать из сырцов отсылаю к скрипту shime на github

https://gist.github.com/shime/5706655

Итак, мы его поставили! Теперь посмотрим запускается ли наш tmux и пусть расскажет нам какой он версии (обратите внимание, опция version -V - заглавная (большая), так как маленькая несёт совсем иной смысл)

$ tmux -V
tmux 1.6
$

Поставили - что дальше?

Запускаем без ключей

$ tmux

...и получаем сессию tmux - как на картинке :) !

как на картинке!

Слегка конкретнее

Что из себя представляет сессия tmux? Нечно, работающее точно так же, как и обычная терминальная сессия (ну почти обычная :) ). Вы можете выйти из неё обычным методом - введя команду exit. Или нажав Ctrl+d (так можно завершить любую сессию, не только tmux).

В отличие от терминальной сессии при разрыве соединения (допустим Вы открыли её удалённо при помощи ssh), сессия tmux не завершится и вы сможете подключиться к ней в любой момент! Интересно? Удобно? Конечно да!

А раз так, то за мной, читатель - я кратко расскажу тебе про основы обращения с tmux!

Очень кратко

Как управлять tmux

Да очень просто:

  • клавиатурными аккордами (hotkeys/горячие клавиши)
  • командами/опциями командной строки
  • при помощи конфигурационных файлов

Hotkeys (горячие клавиши) - совсем кратко для старта

О нажатиях

Горячие клавиши состоят из комбинации префикса (это своеобразный сигнал tmux о том, что далее последует команда именно ему, а не, скажем, текстовому редактору в окне tmux, что-то типа "Ok, Google") и последующей клавиши-команды (combination of a prefix key, ‘C-b’ (Ctrl+b) by default, followed by a command key).

Префиксные клавиши, по умолчанию это Ctrl+b, нажимаются одновременно, затем отпускаются и далее нажимается уже командная клавиша. Любители некоторых текстовых редакторов найдут этот способ управления весьма знакомым :). Префиксные клавиши несложно поменять, прописав новую комбинацию (аккорд) в конфигурационный файл. Но об этом позже.

Итак:

Ctrl+b d - отключиться, от англ. detach. (Точно так же вы отключитесь, если прервётся соединение. Как подключиться обратно и продолжить работу - выполнить команду tmux attach).

В одной сессии может быть сколько угодно окошек (это напоминает обычные виртуальные консоли, только вместо Ctrl+F1..Fn используются другие hotkeys (горячие клавиши, аккорды) и находятся эти "виртуальные консоли" в пределах одной сессии tmux).

Ctrl+b c - создать окошко, от англ. create

Ctrl+b 0...9 - перейти в окошко номер 0..9

Ctrl+b p - перейти в предыдущее окошко, от англ. previouse

Ctrl+b n - перейти в следующее окошко, от англ. next

Ctrl+b l - перейти в предыдущее активное окошко (из которого вы переключились в текущее), от англ. last

Ctrl+b & - закрыть окошко (а можно просто выполнить команду exit или нажать hotkey (аккорд) Ctrl+d в командной строке терминала)