Tmux - консольный мультиплексор

Версия для печатиОтправить другуPDF version

Для начала немного общей информации из Википедии...

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

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

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

 Основные отличия tmux от screen такие:

  • Клиент-серверная архитектура, при которой окна выполняют роль объектов, которые могут одновременно подключаться к нескольким сессиям, перемещаться между ними и просматриваться с разных клиентов (терминалов).
  • Механизм автоматизации выполняемых действий с помощью скриптов.
  • Несколько независимых буферов обмена.
  • Два варианта раскладки клавиатуры: стиль vi и emacs.
  • Более ясный формат описания строки статуса.
  • Возможность отображения вывода команды в строке статуса.
  • Экономное расходование оперативной памяти.
  • Высокая скорость работы.
  • Улучшенная поддержка UTF-8.
  • Интерактивные меню для выбора окон, сессий и клиентов.
  • Более гибкие возможности по разделению окон на регионы.

Итак, уже интересно. Выполним установку tmux из портов.

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

Итак, установка прошла без проблем... Первый запуск:

# tmux

После запуска порадовала панель статуса, включеная по дефолту, да еще и с зеленой подсветкой. Собственно, вот скриншот первой сессии tmux без каких-либо дополнений:

tmux

Как оказалось, сочатание клавиш Ctrl+a не работает, нужно использовать сочетание клавиш Ctrl+b, что не очень удобно. Но удобно тем, что не создает конфликтов со Screen, как в случае с minicom.

Исключая сочетания клавиш в виде 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 служит для изменения настроек окон.

Опции можно внести в конфигурационный файл. Пример tmux.conf

# cat ~/.tmux.conf

# Изменяем цвет строки статуса на белый
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

Также есть возможность модифицировать статусную строку. Для этого предназначены команды status-left и status-right. Как можно догадаться, первая влияет на левую часть статус-бара, а вторая - на правую. Формат

  • #(команда) - результат выполнения указанной команды
  • #H - имя хоста
  • #S - имя текущей сессии
  • #T - имя текущего окна
  • ## - символ #

Еще одной отличительной особенностью tmux является разбиение окон на регионы.

В отличие от Screen, для разделения окна вертикально на два равных региона используется комбинация Ctrl+b+", а для переключения между регионами - либо комбинация Ctrl+b+o, либо Ctrl+b и навигационные клавиши. Изменить размер региона можно с помощью комбинаций Ctrl+b Alt+Up и Ctrl+b Alt+Down. Однако основная изюминка скрывается в поддержке нескольких вариантов размещения регионов, для переключения между которыми предназначена комбинация Ctrl+b+Space. В частности, регионы могут быть расположены горизонтально, вертикально, интеллектуально, с выравниванием или без.

Кстати, есть еще одна приятная особенность. Нажав Ctrl+b+t можно вывести на экран часы, нарисованные псевдографикой. Они не будут исчезать с экрана до нажатия любой клавиши.

 

Скриншоты 

 

Image

tmux

tmux

На этом обзор закончим. Более подробно с возможностями tmux можно ознакомиться на страницах руководства.

Ваша оценка: Нет Средняя: 4.8 (6 голосов)

Вставай, Україно!

Литература