Linux tmux как пользоваться

Обновлено: 03.07.2024

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

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

Базовая идея похожа на моды в Vim. С помощью prefix’a (зарезервированные key bindings или привязка клавиш) можно изменить мод, по умолчанию используется привязка ctrl + b.

Запуск и начало новой сессии

Если ваша ОС — Ubuntu или Debian, вы можете установить tmux командой `sudo apt-get install tmux`. На MacOS — brew install tmux.

Команда для запуска:

Если хотите запустить tmux и сразу дать название новой сессии, используйте эту команду:

Открытие нового окна

Создав сессию в tmux, вы также можете создавать новые окна. Стандартная связка — «ctrl +b + c». Если вы сохранили свой prefix, можете использовать связку «prefix + c». Скорее всего, значение “c” — create, отсюда и такая связка.

Переходы между окнами

Можно также свободно переключаться между созданными окнами. Стандартные связки для этого — «prefix + p» (p — previous) и «prefix + n» (n — next).

Использовать prefix не всегда удобно, поэтому я для себя кастомизировал связки клавиш для перехода между окнами: shift + rightKey для следующего окна и shift + leftKey для предыдущего.

Разделение окон и создание панелей

Разделение окон в tmux похоже на разделение в vim. Вы делите окно на несколько панелей, тем самым в одном окне можно открыть vim, в другом htop, а в третьем выполнять программу.

Без привязки клавиш, команды для разделения окна — prefix + «split-window -h», prefix + «split-window -v».

Передвижение между панелями

Стандартные команды для передвижения между панелями сложноваты, не очень удобны в обращении, поэтому я и в этом случае назначил свои хоткеи: ctrl + shift + upKey, ctrl + shift + downKey, ctrl + shift + rightKey, ctrl + shift + leftKey.

Передвижение между сессиями

С помощью связки клавиш ctrl + t можно вызвать список сессий, а клавишами ↑ ↓ выбрать нужную сессию.

[Практическое использование] Переадресация отображаемого содержания в tmux

По сути, tmux является своего рода виртуальным терминалом, содержащимся в директории /dev/pts/. Для каждой панели создается директория такого же формата.

Другими словами, если мы определим каждой панели, можно переадресовать потоки stdout и stderr с панели X раздельно — один на панель Y, другой на панель Z.

Таким образом можно выводить на разные панели stderr и stdout программы, которые вы пишете, а также использовать терминал как лог операций.

[Практическое использование] Отображение названия ветки Git в статус-баре

Это лайфхак, который использует возможность чтения Shellscript и Python script из .tmux.conf — файла конфигурации tmux.

Статус-бар можно настроить следующей командой:

tmux_hook — это файл, который я создал для отображения времени и текущей ветки Git, но он, по сути, может вернуть любую текстовую информацию. Например, если правильно настроить, можно в статус-баре отображать даже таймлайн своего твиттера.

Используй tmux на полную, практическое использование

[Практическое использование] Отображение пути текущей операции

Часто, прыгая по терминалу, хочется понять, в какой ты директории, в каком пути она содержится.

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

Используй tmux на полную, практическое использование

[Практическое использование] Вызов сниппета

Несмотря на то, что tmux является менеджером сессий с функцией разделения терминала, он может выполнять некоторые функции IDE (круто, не правда ли?). Вы можете забиндить свои хоткеи на специальную настройку send-keys и вызвать их в терминале.

Например, если настроить send-keys как на моем примере ниже, можно просто нажать prefix + 1 и вывести команды import, необходимые для работы с python.

Ссылка на настройки .tmux.conf

Совместимость версий tmux

Иногда случается, что некоторые настройки tmux не работают — в этом случае, его версия может быть либо слишком новой, либо слишком старой.

Все вышеописанное и конфиг, на который я оставил ссылку, — для tmux версии 2.8 и выше. Если у вас что-либо не работает, проверьте, подходит ли вам данная версия.

Если вы соберетесь самостоятельно что-то отлаживать, то прежде всего стоит обратиться к man tmux — самой надежной документации по tmux на данный момент.

Tmux - это терминальный мультиплексор или иными словами, вы можете в одном терминале запустить несколько терминальных сессий и переключаться между ними или даже разместить их в одном окне, а также отключиться от сессии оставив её работать в фоне, а затем вернуться и посмотреть результат, это может быть очень удобно при работе по SSH. Если вы раньше пользовались утилитой screen, то tmux - это её аналог, который имеет намного больше функций.

Эта статья - небольшая шпаргалка по Tmux, в которой мы разберем установку программы, основные её возможности и команды, а также некоторые приемы использования. После прочтения статьи вы сможете полноценно пользоваться утилитой.

Установка Tmux

Здесь все просто. Для установки программы в Ubuntu выполните следующую команду:

sudo apt install tmux


А для установки в CentOS:

sudo yum install tmux

Синтаксис и опции команды Tmux

Синтаксис команды предельно простой, для создания новой сессии достаточно запустить утилиту без параметров. Для подключения к уже существующей придется использовать дополнительные опции. Вот основной синтаксис:

tmux команда опции

Что касается опций, то в большинстве вам придется использовать только две - это -t (target) - которая указывает цель, к которой будет применяться команда, например, идентификатор сессии или подключенного клиента, а также -s (session) - который обычно используется для обозначения источника, над которым будет выполняться действие.

Команды tmux для управления сессиями, которые вы можете использовать:

  • attach-session (attach) - подключиться к уже существующей сессии. В параметре необходимо передать опцию -t и идентификатор сессии;
  • detach-session (detach) - отключить всех клиентов (или переданного с помощью опции -t) от сессии, переданной в опции -s;
  • has-session - проверить существует ли сессия, аналогично, надо передать идентификатор сессии;
  • kill-server - остановить все запущенные сессии;
  • kill-session - завершить сессию переданную в параметре -t;
  • list-clients - посмотреть клиентов, подключенных к сессии -t;
  • list-sessions (ls) - вывести список всех запущенных сессий;
  • new-session - создать новую сессию, можно передать имя сессии в опции -s и стартовую директорию в опции -c;
  • rename-session - переименовать сессию, нужно передать идентификатор сессии и новое имя;

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

По умолчанию для активации сочетания клавиш нужно нажать Ctrl+B, отпустить, а потом нажать нужную клавишу. Вот основные сочетания клавиш tmux, которые вам понадобятся:

  • Ctrl+b c - создать новое окно;
  • Ctrl+b w - выбрать окно из списка;
  • Ctrl+b 0-9 - открыть окно по его номеру;
  • Ctrl+b , - переименовать текущее окно;
  • Ctrl+b % - разделить текущую панель по горизонтали;
  • Ctrl+b " - разделить текущую панель по вертикали;
  • Ctrl+b стрелка - перейти на панель, находящуюся в стороне, куда указывает стрелка;
  • Ctrl+b Ctrl+стрелка - изменить размер текущей панели;
  • Ctrl+b o - перейти на следующую панель;
  • Ctrl+b ; - переключаться между текущей и предыдущей панелью;
  • Ctrl+b x - закрыть текущую панель;
  • Ctrl+b [ - войти в режим копирования (подробнее ниже);
  • Ctrl+b ] - вставить из внутреннего буфера обмена tmux;
  • Ctrl+b d - отключится от текущей сессии;
  • Ctrl+b : - открыть командную строку.

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

Как пользоваться tmux

1. Создание сессии

Чтобы создать новую сессию достаточно выполнить команду без параметров:

Также можно создать сессию командой new-session и задать ей удобное имя:

tmux new-session -s losst


2. Разделение окна на панели

Окно сессии можно разделить на несколько панелей. Чтобы выполнить разделение по горизонтали нажмите Ctrl+b отпустите, а затем нажмите Shift+":


Аналогично можно разделить панель по вертикали, нажав Ctrl+b, а затем Shift+%:


Размер активной панели можно менять нажав Ctrl+b, а потом Ctrl и стрелка:


А для переключения между панелями используйте клавиши Ctrl+b и стрелка. Сначала не привычно, но потом удобно.

3. Поддержка мышки

По умолчанию поддержка мышки отключена, но если вы работаете в графическом окружении, вы можете её включить. Это даст несколько преимуществ: вы сможете выбирать активную панель мышкой, копировать текст во внутренний буфер обмена, менять размер панелей, использовать прокрутку для просмотра истории вывода и так далее. Для этого откройте файл

/.tmux.conf и добавьте туда следующие строки:


Сохраните изменения, нажмите Ctrl+b :, а потом выполните такую команду чтобы перезагрузить tmux:


Настройка tmux завершена, теперь мышь будет работать.

4. Копирование и вставка

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


Если вы хотите иметь возможность скопировать в системный буфер обмена, перед тем как выполнять действия мышкой зажмите Shift:

Кроме того, в tmux есть управление копированием и вставкой с помощью клавиш. Для перехода в режим копирования нажмите Ctrl+B [, затем переместите курсор к нужному месту с помощью стрелок. Кстати, этот режим можно использовать также для прокрутки. Потом нажмите Ctrl+пробел для начала выделения, выделите нужный фрагмент стрелками и нажмите Ctrl+w для копирования.


Чтобы вставить текст из внутреннего буфера обмена нужно нажать сочетание клавиш Ctrl+b ]. Для выхода из режима копирования используйте q или Esc.

5. Окна tmux

Кроме панелей в tmux можно открывать окна. Это аналог рабочих столов в Linux. Каждое окно привязано к определенной цифровой кнопке и имеет свой набор панелей. Для создания нового окна нажмите Ctrl+b c:


Список окон выводится внизу окна терминала. Для переключения на нужное окно нажмите Ctrl+b и номер окна.

6. Отключение от сессии

Чтобы отключиться от текущей сессии достаточно нажать сочетание клавиш Ctrl+b d.

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

7. Подключение к сессии

Посмотреть список сессий можно командой ls:


А для подключения используйте attach:

tmux attach -t losst


Ещё можно посмотреть список клиентов, подключенных к сессии:


Выводы

В этой статье мы разобрали основные команды tmux, а также как пользоваться этой утилитой. Я для себя открыл tmux не давно. Слышал о программе довольно давно, но никак не доходили руки попробовать, а потом попробовал и уже не могу без неё обойтись.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Мне нравится работать с командной строкой. Серьёзно, я считаю, что нет более продуктивного инструмента при разработке ПО, чем терминал. Может быть это связано с тем, что при работе в консоли начинаешь чувствовать себя хакером/волшебником/гиком, но не важно.

Основные команды Tmux

Работая, мы выполняем задачи совместно с другими программистами. У каждого есть свой ноутбук или ПК, и каждый подбирает удобные для себя инструменты. Так как я люблю работать с командной строкой, то я потратил некоторое время на совершенствование своей терминальной среды. Вот что видят мои напарники, когда начинают работать со мной:

Те кто работал со мной раньше знают, что это и как такое настроить у себя. Но у новичков это вызывает бурю эмоций и негодование.

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

Что такое tmux?

Разработчики позиционируют его как терминальный мультиплексор. За этим термином скрывается простой смысл - вы можете создавать много окон в пределах одного терминала. Благодаря этому можно запускать много консольных приложений не засоряя рабочее пространство множеством открытых окон эмуляторов терминала.

Tmux сохраняет весь результат вашей работы в сессиях. Вы можете покидать сессию в любой момент времени. По терминологии tmux это называется detaching. Позже, вы сможете восстановить сессию, пока запущен сервер tmux (пока компьютер не будет перезагружен).

Особенно удобно это использовать во время работы по SSH. Например, по каким-то причинам вы потеряли соединение с удаленным сервером, в любой момент можно переподключиться заново и начать работу с той самой точки на которой вы закончили.

Подводя итоги можно сказать, что tmux предоставляет две основные возможности: управление окнами и управление сессиями.

Начало

Установка.

Tmux доступен в большинстве репозиториев, поэтому его установка сводится к классическому набору команд:

Запускаем первую сессию.

Для запуска первой сессии просто вводим команду в терминале:

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

Разделение панелей

При создании нового сеанса, tmux по умолчанию начнет работу с одного окна и одной панели внутри. Но давайте попробуем разделить наше окно на несколько рабочих областей.

Все команды в tmux вызываются ключом префикса с последующим ключом команды (очень похож на Emacs). По умолчанию, tmux использует C-B в качестве ключа префикса. Эта запись может показаться немного странной, если вы не привыкли к tmux. Обозначение C- означает "нажмите и удерживайте клавишу Ctrl". Таким образом, С-Ь означает просто нажмите Ctrl и клавиши B одновременно.

Разделить рабочее окно на левую и правую панель можно при помощи комбинаций С-b %. КОманды следует вводить последовательно. Тоесть сначала нажимаем Ctrl+B затем отпускаем и нажимаем %.

Разделение панелей в tmux

Для разделение окна по вертикали используется комманда С-b ". Как и в предыдущем примере, сначала вводим Ctrl+B, затем ".

Навигация между панелями

Для переключения курсора с одной панели на другую используется уже знакомая нам комбинация клавиш С-b. Нажимаем ее для переключения в режим ввода комманд и стрелками выбираем нужное нам направление переключения.

Закрытие панелей

Для того, чтобы закрыть панель достаточно ввести команду exit или нажать комбинацию Ctrl+d.

Создание окон

Окнами в tmux называются некие рабочие пространства (аналогично с рабочими столами в KDE, GNOME, XFCE). Чтобы создать окно необходимо набрать комбинацию С-b -> c . Навигация между окнами осуществляется при помощи комбинации С-b p (предыдущее окно) С-b n (следующее окно). Или при помощи С-b <номер окна>.

Работа с сессиями

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

Чтобы свернуть сессию необходимо набрать С-b d (от англ. detach). Если нажать С-b D, то tmux предложит вам выбрать какую сессию необходимо свернуть.

Чтобы просмотреть список свернутых сессий выполним команду

В ответ вы получите что-то похожее на это:

0: 1 windows (created Tue Feb 21 13:50:54 2017) [135x33]

Чтобы подключиться к сессии необходимо выполнить комманду:

Где 0 - идентификатор сессии. Для того, чтобы дать сессии более красивое имя существует команда

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

Что такое Tmux

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

Определение выше, взятое с веб-сайта tmux , понятно: из одного окна терминала мы можем запускать и управлять несколькими другими терминалами и в каждом из них запускать другое приложение или другой экземпляр приложения.

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

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

Подключение к сеансу tmux выполняется при запуске приложения с помощью следующей команды:

Когда один пользователь хочет завершить функцию совместного использования терминала, используется следующая команда:

Как установить Tmux

tmux работает на Linux и Mac. На момент написания этой статьи я не знаком с версией приложения для Windows.

Для большинства дистрибутивов Linux в своих репозиториях есть пакет:

В Arch (который я использую) установка - это просто запуск следующей команды:

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

Если вы работаете на Mac, iTerm2 поставляется с установленным tmux , и для его запуска вы должны выполнить команду: tmux.

Особенности

После установки, если вы запустите окно терминала, единственное, что вы заметите, это наличие строки статуса внизу экрана:

terminal with tmux
terminal with tmux
terminal with tmux

Давайте посмотрим на самые общие функции. Полный список функций смотрите в ссылках в конце этой статьи.

Создание панелей

Или, другими словами, разделение главного окна. Прежде всего, я должен сказать, что каждая команда tmux имеет префикс с использованием следующей комбинации клавиш: <Ctrl-b> . Это можно изменить, но позже мы научимся и настраивать tmux .

Таким образом, для разбиения окна по вертикали (или на правой и левой панелях) должна использоваться следующая команда:

И для разбиения окна на горизонтальные панели вы можете использовать:

И результат должен выглядеть следующим образом:

splitting windows
splitting windows
splitting windows

Переход с одной панели на другую и размещение панелей

Чтобы переместить курсор с одной панели на другую (активирование панелей), используются клавиши со стрелками. Команда выглядит так:

Если вы хотите перейти на предыдущую активную панель, вы можете использовать следующую команду:

Кроме того, если вас не устраивает позиция панели, вы можете перемещать панели, используя команду:

Изменение размеров панелей

После создания вы можете изменить размер каждого окна на один шаг, используя:

С шагом в 5 клеток, используя:

Закрытие панели

Когда вы хотите закрыть текущую панель, вы можете использовать:

Создаем новое окно

Иногда вы можете создать другое окно, например, для работы над другим проектом. Это окно может содержать совершенно другой набор панелей с разными программами в каждом из них. Для этого выполните следующую команду:

Затем, если вы хотите перейти к следующему окну, вы можете использовать:

И вы можете перейти к предыдущему окну, используя:

Или вы можете выбрать окно в интерактивном режиме:

Закрытие окна

Чтобы закрыть текущее открытое окно, вы используете:

Режим копирования

Предположим, вы выполнили команду в терминале, и вывод команды не помещается на один экран, поэтому вам нужно прокрутить вверх, чтобы увидеть весь вывод. Если вы попытаетесь нажать клавишу «Вверх», это не прокрутит вас, так как он покажет вам только историю команд. Чтобы прокрутить экран вверх, используйте следующую команду:

Затем нажмите одну из следующих клавиш: Вверх , Вниз , PgUp или PgDn для прокрутки вверх или вниз.

Кроме того, находясь в этом режиме вы можете скопировать текст из истории, а затем вставить его с помощью:

Чтобы выйти из этого режима вставки , просто нажмите esc.

Так же есть много других команд, связанных с различными клавишами. Вы можете просмотреть все привязки клавиш:

Конфигурирование Tmux

tmux очень хорошо настраивается. Файл конфигурации находится либо в /etc/tmux.conf для системных настроек, либо (рекомендуется) в

/.tmux.conf для пользовательских настроек.

Изменение клавиши префикса

Одной из первых вещей, которые меняют большинство пользователей, является привязка клавиши префикса (так как <Ctrl-b> не кажется таким уж удобным). Большинство пользователей используют <Ctrl-a> . Это можно сделать следующим образом:

Опция -g в первой команде сообщает tmux, что это глобальная опция, то есть она установлена для всех окон и сеансов.

Изменение привязок клавиш

Некоторые пользователи могут предпочесть Vi или Emacs как привязки для ключевых действий. Это делается с помощью:

Команда setw задает параметр для окна (влияет на все панели в окне).

Строка состояния

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

Чтобы отключить строку состояния, выполните следующую команду:

Или вы можете попробовать что-то вроде этого:

. это изменяет фон строки состояния на синий, цвет текста на белый и отображает слева от строки состояния имя хоста localhost, за которым следуют двоеточие и имя сеанса, за которым следует строка «at» и имя окна , двоеточие и, наконец, заголовок панели.

Вы также можете отобразить строку состояния внизу или вверху окна:

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

Вывод

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

Читайте также: