Название

tmux - терминальный мультиплексер

Синопсис

tmux [-2CluvV] [-c shell-command] [-f file] [-L socket-name] [-S socket-path] [command [flags]]

Описание

tmux — это мультиплексор терминалов: он позволяет создавать несколько терминалов, получать к ним доступ и управлять ими с одного экрана. tmux можно отсоединить от экрана и продолжить работу в фоновом режиме, а затем снова подключить.

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

Сессия — это отдельная коллекция псевдотерминалов под управлением tmux. С каждым сеансом связано одно или несколько окон. Окно занимает весь экран и может быть разделено на прямоугольные панели, каждая из которых представляет собой отдельный псевдотерминал (страница руководства pty(4) описывает технические детали псевдотерминалов). Любое количество экземпляров tmux может подключаться к одному и тому же сеансу, и любое количество окон может присутствовать в одном сеансе. Как только все сеансы будут уничтожены, tmux завершит работу.

Каждый сеанс является постоянным и выдержит случайное отключение (например, тайм-аут соединения ssh(1)) или преднамеренное отключение (нажатием клавиши «C-b d»). tmux может быть повторно подключен с помощью:

$ tmux attach

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

Ключи командной строки

-2 Заставить tmux предполагать, что терминал поддерживает 256 цветов.

-C Запуск в режиме управления (см. раздел РЕЖИМ УПРАВЛЕНИЯ). Повтор (-CC) отключает эхо.

-c команда оболочки - Выполнить команду оболочки, используя оболочку по умолчанию. При необходимости сервер tmux будет запущен для получения опции default-shell. Эта опция предназначена для совместимости с sh(1), когда tmux используется в качестве оболочки входа в систему.

-f файл - Указать альтернативный файл конфигурации. По умолчанию tmux загружает файл конфигурации системы из /etc/tmux.conf, если он есть, а затем ищет файл конфигурации пользователя в ~/.tmux.conf .

Файл конфигурации представляет собой набор команд tmux, которые последовательно выполняются при первом запуске сервера. tmux загружает файлы конфигурации один раз при запуске серверного процесса. Команда исходного файла может использоваться для загрузки файла позже.

tmux показывает любые сообщения об ошибках команд в файлах конфигурации в первом созданном сеансе и продолжает обрабатывать остальную часть файла конфигурации.

-L имя-сокета - tmux сохраняет сокет сервера в каталоге TMUX_TMPDIR или /tmp, если он не установлен. Сокет по умолчанию называется default. Эта опция позволяет указать другое имя сокета, позволяя запускать несколько независимых серверов tmux. В отличие от -S полный путь не обязателен: все сокеты создаются в одном каталоге.

Если сокет был случайно удален, сигнал SIGUSR1 может быть отправлен серверному процессу tmux для его воссоздания (обратите внимание, что это не удастся, если отсутствуют какие-либо родительские каталоги).

-l Работать как оболочка для входа в систему. Этот флаг в настоящее время не действует и предназначен для совместимости с другими оболочками при использовании tmux в качестве оболочки входа в систему.

-S путь-сокета Указать полный альтернативный путь к сокету сервера. Если указан параметр -S, каталог сокетов по умолчанию не используется, а любой флаг -L игнорируется.

-u Писать вывод UTF-8 на терминал, даже если первая установленная переменная среды LC_ALL, LC_CTYPE или LANG не содержит «UTF-8» или «UTF8».

-v Запрос подробного ведения журнала. Сообщения журнала будут сохраняться в файлы tmux-client-PID.log и tmux-server-PID.log в текущем каталоге, где PID — это PID серверного или клиентского процесса. Если -v указан дважды, создается дополнительный файл tmux-out-PID.log с копией всего, что tmux записывает в терминал.

Сигнал SIGUSR2 может быть отправлен серверному процессу tmux для включения или выключения ведения журнала (как если бы был указан параметр -v).

-V Сообщить версию tmux.

команда [флаги] Это указывает одну из набора команд, используемых для управления tmux, как описано в следующих разделах. Если команды не указаны, предполагается команда new-session.

Горячие клавиши по умолчанию

tmux может управляться из подключенного клиента с помощью комбинации клавиш префикса, «C-b» (Ctrl-b) по умолчанию, за которой следует командная клавиша.

Горячие клавиши по умолчанию:

  • C-b Отправьте ключ префикса (C-b) в приложение.
  • C-o Повернуть панели в текущем окне вперед.
  • C-z Приостановить работу клиента tmux.
  • ! Вырвать текущую панель из окна.
  • " Разделить текущую панель на две части, верхнюю и нижнюю.
  • # Список всех буферов вставки.
  • $ Переименовать текущий сеанс.
  • % Разделить текущую панель на две части, левую и правую.
  • & Убить текущее окно.
  • ' Запрашивает индекс окна для выбора.
  • ( Переключите подключенный клиент на предыдущий сеанс.
  • ) Переключите подключенный клиент на следующий сеанс.
  • , Переименовать текущее окно.
  • - Удалить самый последний скопированный буфер текста.
  • . Запрашивать индекс для перемещения текущего окна.
  • от 0 до 9 Выберите окна от 0 до 9.
  • : введите командную строку tmux.
  • ; Переход к ранее активной панели.
  • = Выберите буфер для вставки в интерактивном режиме из списка.
  • ? Перечислите все привязки клавиш.
  • D Выберите клиента для отключения.
  • L Переключите подключенного клиента обратно на последний сеанс.
  • [ Войдите в режим копирования, чтобы скопировать текст или просмотреть историю.
  • ] Вставьте последний скопированный буфер текста.
  • c Создайте новое окно.
  • d Отсоединить текущего клиента.
  • f Предлагать искать текст в открытых окнах.
  • i Показать некоторую информацию о текущем окне.
  • l Переход к ранее выбранному окну.
  • n Перейти к следующему окну.
  • o Выберите следующую панель в текущем окне.
  • p Перейти к предыдущему окну.
  • q Кратко отображать индексы панелей.
  • r Принудительно перерисовать подключенного клиента.
  • m Отметьте текущую панель (см. select-pane -m).
  • M Очистить отмеченную панель.
  • s Выберите новый сеанс для подключенного клиента в интерактивном режиме.
  • t Показать время.
  • w Выберите текущее окно в интерактивном режиме.
  • x Удалить текущую панель.
  • z Переключить состояние масштабирования текущей панели.
  • { Поменять местами текущую панель с предыдущей панелью.
  • } Поменять местами текущую панель со следующей панелью.
  • ~ Показать предыдущие сообщения от tmux, если они есть.
  • Page Up Вход в режим копирования и прокрутка на одну страницу вверх.
  • Вверх вниз
  • Лево право Перейдите на панель выше, ниже, слева или справа от текущей панели.
  • От M-1 до M-5 Расположите панели в одном из пяти предустановленных макетов: четное по горизонтали, четное по вертикали, основное по горизонтали, основное по горизонтали, вертикальные или плиточные.
  • Пробел Упорядочить текущее окно в следующем предустановленном макете.
  • M-n Перейти к следующему окну с помощью звонка или маркера активности.
  • M-o Повернуть панели в текущем окне назад.
  • M-p Перейти к предыдущему окну с помощью звонка или маркера активности.
  • C-вверх, C-вниз
  • C-левый, C-правый - Изменение размера текущей панели с шагом в одну ячейку.
  • М-вверх, М-вниз
  • M-левый, M-правый - Изменение размера текущей панели с шагом в пять ячеек.

Привязки клавиш можно изменить с помощью команд bind-key и unbind-key.

РАЗБОР И ВЫПОЛНЕНИЕ КОМАНД

tmux поддерживает большое количество команд, которые можно использовать для управления его поведением. Каждая команда имеет имя и может принимать ноль или более флагов и аргументов. Они могут быть привязаны к клавише с помощью команды bind-key или запускаться из командной строки, сценария оболочки, файла конфигурации или командной строки. Например, одна и та же команда set-option, запускаемая из командной строки, из ~/.tmux.conf и привязанная к ключу, может выглядеть так:

$ tmux set-option -g status-style bg=cyan

set-option -g status-style bg=cyan

bind-key C set-option -g status-style bg=cyan

Здесь имя команды — «set-option», «-g» — флаг, а «status-style» и «bg=cyan» — аргументы.

tmux различает синтаксический анализ и выполнение команд. Чтобы выполнить команду, tmux нужно, чтобы она была разделена на имя и аргументы. Это разбор команды. Если команда запускается из оболочки, оболочка анализирует ее; изнутри tmux или из файла конфигурации tmux делает. Примеры, когда tmux анализирует команды:

  • в конфигурационном файле;
  • вводится в командной строке (см. командная строка);
  • дан бинд-ключ;
  • передается в качестве аргументов для if-shell или для подтверждения перед.

Для выполнения команд у каждого клиента есть «очередь команд». Глобальная очередь команд, не привязанная к какому-либо клиенту, используется при запуске для файлов конфигурации, таких как ~/.tmux.conf. Проанализированные команды, добавленные в очередь, выполняются по порядку. Некоторые команды, такие как if-shell и confirm-before, анализируют свои аргументы для создания новой команды, которая вставляется сразу после себя. Это означает, что аргументы могут анализироваться дважды или более: один раз, когда анализируется родительская команда (например, if-shell), и второй раз, когда она анализирует и выполняет свою команду. Такие команды, как if-shell, run-shell и display-panes, останавливают выполнение последующих команд в очереди до тех пор, пока что-то не произойдет. Например, следующие команды:

new-session; new-window if-shell "true" "split-window" kill-session

Выполнит new-session, new-window, if-shell, команду оболочки true(1), split-window и kill-session в указанном порядке.

В разделе COMMANDS перечислены команды tmux и их аргументы.

Разбор синтаксиса

В этом разделе описывается синтаксис команд, анализируемых tmux, например, в файле конфигурации или в командной строке. Обратите внимание, что когда команды вводятся в оболочку, они анализируются оболочкой - см., например, ksh(1) или csh(1).

Каждая команда завершается символом новой строки или точкой с запятой (;). Команды, разделенные точкой с запятой, вместе образуют «последовательность команд» — если команда в последовательности обнаруживает ошибку, последующие команды не выполняются.

Комментарии помечаются символом # без кавычек — любой оставшийся текст после комментария игнорируется до конца строки.

Если последним символом строки является \, эта строка соединяется со следующей строкой (символ \ и перевод строки полностью удаляются). Это называется продолжением строки и применяется как внутри, так и вне строк в кавычках и в комментариях, но не внутри фигурных скобок.

Аргументы команды могут быть указаны в виде строк, заключенных в одинарные (') кавычки, двойные кавычки (") или фигурные скобки ({}). Это требуется, когда аргумент содержит какой-либо специальный символ. Строки в одинарных и двойных кавычках не могут охватывать несколько строк, за исключением строки фигурные скобки могут охватывать несколько строк.

Вне кавычек и внутри двойных кавычек выполняются следующие замены:

  • Переменные окружения, которым предшествует $, заменяются их значением из глобального окружения (см. раздел ГЛОБАЛЬНОЕ И СЕССОННОЕ ОКРУЖЕНИЕ).
  • Ведущий ~ или ~пользователь расширяется до домашнего каталога текущего или указанного пользователя.
  • \uXXXX или \uXXXXXXX заменяется кодовой точкой Unicode, соответствующей заданному четырех- или восьмизначному шестнадцатеричному числу.
  • Если перед (экранированным) символом \ заменяются следующие символы: \e на escape-символ; \r возвратом каретки; \n через новую строку; и \t на вкладке.
  • \ooo заменяется символом восьмеричного значения ooo. Требуются три восьмеричных цифры, например \001. Самый большой допустимый символ — \377.
  • Любые другие символы, которым предшествует \, заменяются самими собой (то есть \ удаляются) и не рассматриваются как имеющие какое-либо особое значение - например, \; не помечает последовательность команд, а \$ не расширяет переменную окружения.

Фигурные скобки аналогичны одинарным кавычкам тем, что текст внутри берется буквально без каких-либо замен, но также включает продолжение строки. Фигурные скобки могут охватывать несколько строк, и в этом случае в строку включается литеральный перевод строки. Они предназначены для того, чтобы избежать необходимости в дополнительном экранировании при передаче группы команд tmux или shell в качестве аргумента (например, в if-shell или pipe-pane). Эти два примера создают идентичную команду — обратите внимание, что при использовании {} экранирование не требуется:

           if-shell true {
               display -p 'brace-dollar-foo: }$foo'
           }

           if-shell true "\n    display -p 'brace-dollar-foo: }\$foo'\n"

Фигурные скобки могут быть заключены внутри фигурных скобок, например:

           bind x if-shell "true" {
               if-shell "true" {
                    display "true!"
               }
           }

Переменные среды могут быть установлены с использованием синтаксиса «имя=значение», например, «HOME=/home/user». Переменные, установленные во время парсинга, добавляются в глобальную среду.

Команды можно анализировать условно, окружая их ‘%if’, ‘%elif’, ‘%else’ и ‘%endif’. Аргумент '%if' и '%elif' расширяется как формат (см. ФОРМАТЫ), и если он оценивается как ложный (ноль или пустой), последующий текст игнорируется до закрытия '%elif', '%else' или '%конец'. Например:

           %if "#{==:#{host},myhost}"
           set -g status-style bg=red
           %elif "#{==:#{host},myotherhost}"
           set -g status-style bg=green
           %else
           set -g status-style bg=blue
           %endif

Строка состояния изменится на красную, если она запущена на «myhost», на зеленую, если она запущена на «myotherhost», или на синюю, если она запущена на другом хосте. Условные обозначения могут быть указаны в одной строке, например:

           %if #{==:#{host},myhost} set -g status-style bg=red %endif

Команды

В этом разделе описываются команды, поддерживаемые tmux. Большинство команд принимают необязательный аргумент -t (а иногда и -s) с одним из следующих параметров: target-client, target-session, target-window или target-pane. Они определяют клиент, сеанс, окно или панель, на которые должна воздействовать команда.

target-client должно быть именем клиента, обычно файлом pty(4), к которому подключен клиент, например, либо /dev/ttyp1, либо ttyp1 для клиента, подключенного к /dev/ttyp1. Если клиент не указан, tmux пытается определить используемый в данный момент клиент; если это не удается, сообщается об ошибке. Клиенты могут быть перечислены с помощью команды list-clients.

target-session пробуется как, в следующем порядке:


Published

Category

soft

Tags

Contact