Tmux - консольный мультиплексор*** ссылки только после
регистрации или
входа - свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. tmux может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к tmux, находящемуся в фоне.
Tmux является штатным мультиплексором терминалов *** ссылки только после
регистрации или
входа. Программа tmux задумывалась как замена программы *** ссылки только после
регистрации или
входа.
При старте tmux создаёт новую сессию с единственным окном и отображает её на экране. В статусной строке в самом низу экрана отображается информация о текущей сессии; эта же строка используется для ввода команд tmux’а.
Сессия tmux - это совокупность псевдо-терминалов, находящихся под управлением tmux’а. К каждой сессии привязаны одно или более окон. Экран может быть занят как только одним окно, так и мозаикой из нескольких окон, каждое из которых соответствует одному псевдо-терминалу.
Основные отличия tmux от screen такие:
- Клиент-серверная архитектура, при которой окна выполняют роль объектов, которые могут одновременно подключаться к нескольким сессиям, перемещаться между ними и просматриваться с разных клиентов (терминалов).
- Механизм автоматизации выполняемых действий с помощью скриптов.
- Несколько независимых буферов обмена.
- Два варианта раскладки клавиатуры: стиль vi и emacs.
- Более ясный формат описания строки статуса.
- Возможность отображения вывода команды в строке статуса.
- Экономное расходование оперативной памяти.
- Высокая скорость работы.
- Улучшенная поддержка UTF-8.
- Интерактивные меню для выбора окон, сессий и клиентов.
- Более гибкие возможности по разделению окон на регионы.
Итак, уже интересно. Выполним установку tmux из портов.
# cd /usr/ports/sysutils/tmux && make install clean && rehash
Итак, установка прошла без проблем... Первый запуск:
# tmux
После запуска порадовала панель статуса, включеная по дефолту, да еще и с зеленой подсветкой.
Собственно, вот скриншот первой сессии tmux без каких-либо дополнений:

Как оказалось, сочатание клавиш
Ctrl-a не работает, нужно использовать сочетание клавиш
Ctrl-b, что не очень удобно. Это удобно тем, что не создает конфликтов со
Screen, как в случае с minicom. Но мы их потом переделаем в обычные
Ctrl-a 
Исключая сочетания клавиш в виде
Ctrl-b, большинство клавиатурных комбинаций совместимы со
Screen. Так,
Ctrl-b c открывает новое окно, а при
Ctrl-b 1 выполняется переход к окну номер один. В то же время некоторые действия выполняются совершенно другими сочетаниями клавиш:
Ctrl-b w - это меню открытых окон
Ctrl-b l - предыдущее окно
Ctrl-b " - разделить окно по вертикали
Ctrl-b & - уничтожает окно.
Для отключения от сессии используется все та же комбинация
Ctrl-b d, однако для подключения обратно используется другой аргумент командной строки:
# tmux attach
Также следует отметить тот факт, что любое действие, выполняемое с помощью сочетания клавиш, можно выполнить из коммандной строки. Например:
# tmux last-window - переход к предыдущему окну
# tmux new-window - создание нового окна
# tmux list-commands - список поддерживаемых комманд
Не стоит недооценивать значение команд, при использовании
tmux. С их помощью выполняется конфигурирование программы. Именно для конфигурирования предназначены две команды:
set-option и
set-window-option.
set-option служит для изменения параметров сессии,
set-window-option служит для изменения настроек окон.
Опции можно внести в конфигурационный файл в /usr/local/etc/tmux.conf:
# sample tmux.conf file
#
# URLs to read:
#
# http://blog.yjl.im/2009/11/migrating-to-tmux-from-gnuscreen.html
# http://blog.hawkhost.com/2010/06/28/tmux-the-terminal-multiplexer/
# http://blog.hawkhost.com/2010/07/02/tmux-%E2%80%93-the-terminal-multiplexer-part-2/
# http://www.dayid.org/os/notes/tm.html
#
# Other sample tmux.conf files
#
# http://www.mindfuzz.net/?p=178
#
# -----------------------------------------------------------------------------
# Global settings
# Изменяем цвет строки статуса на белый
set -g status-bg white
# Изменяем правую часть статусной строки
set -g status-right '#(echo $USER)@#H #(uptime | cut -d "," -f 1)'
# Навигация по командной строке и списку окон в режиме vi
set -g status-keys vi
setw -g mode-keys vi
# Размер буфера истории
set -g history-limit 1000
# Меняем стандартный префикс на Ctrl-a
set -g prefix C-a
unbind C-b
# Переход к предыдущему окну по Ctrl-a
bind C-a last-window
# Ctrl-a +m включает мониторинг активности
bind M setw monitor-activity on
# Ctrl-a +m - запустить sudo mc
bind m neww 'exec sudo mc'
# Альтернативные комбинация для горизонтального Ctrl-a -(_) и вертикального Ctrl-a \ (|) разбития
bind-key - split-window -v
bind-key _ split-window -v
bind-key \ split-window -h
bind-key | split-window -h
# Cтарт индексации окон с единицы (default 0)
set -g base-index 1
Также есть возможность модифицировать статусную строку. Для этого предназначены комманды
status-left и
status-right. Как можно догадаться, первая влияет на левую часть статус-бара, а вторая - на правую. Формат
#(команда) - результат выполнения указанной команды
#H - имя хоста
#S - имя текущей сессии
#T - имя текущего окна
## - символ #
Еще одной отличительной особенностью tmux является разбиение окон на регионы.
В отличие от Screen, для разделения окна вертикально на два равных региона используется комбинация
Ctrl-b ", а для переключения между регионами по умолчянию - либо комбинация
Ctrl-b o, либо
Ctrl-b и навигационные клавиши. Но не забываем, что мы переделали комбинацию в фале tmux.conf на более удобную
Ctrl-a
Изменить размер региона можно с помощью комбинаций по умолчанию
Ctrl-b Alt-Up и
Ctrl-b Alt-Down, а в нашей переделке уже
Ctrl-a Alt-Up и
Ctrl-a Alt-Down. Однако основная изюминка скрывается в поддержке нескольких вариантов размещения регионов, для переключения между которыми предназначена комбинация
Ctrl-b Space (в моем случае
Ctrl-a Space). В частности, регионы могут быть расположены горизонтально, вертикально, интеллектуально, с выравниванием или без.
Кстати, есть еще одна приятная особенность. Нажав
Ctrl-b t (
Ctrl-a t) можно вывести на экран часы, нарисованные псевдографикой. Они не будут исчезать с экрана до нажатия любой клавиши.
На этом обзор закончим. Более подробно с возможностями tmux можно ознакомиться *** ссылки только после
регистрации или
входа.