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

Чтобы это делать в Linux дистрибутивах на основе GNOME и Cinnamon, вы можете установить инструмент под названием Terminator, которые предоставляет эффективный способ разделения одного окна консоли на несколько терминалов для различных задач.
Тем не менее имеются другие варианты, которые вам стоит рассмотреть. Особенно если перед вами сервер только с интерфейсом командной строки, или рабочий стол с системой окон X не может запуститься на вашем дистрибутиве.
В этой статье мы расскажем вам о tmux (сокращение для Terminal MUltipleXer), простой и современной альтернативе хорошо известной утилите GNU screen. Вы научитесь подключаться и контролировать ряд терминалов (или окон) из одного терминала. Этот инструмент будет работать как в окружении только с интерфейсом командной строки, так и внутри эмулятора терминала в дистрибутивах с графическим рабочим столом.
Дополнительно, умение создавать несколько сессий tmux может помочь вам организовать вашу работу в различных частях терминала для улучшения вашей продуктивности.
Как установить tmux (мультиплексер терминалов) в Linux
Для установки вы можете использовать вашу стандартную систему управления пакетами.
Установка в Debian, Linux Mint, Ubuntu, Kali Linux и производные:
Установка в Arch Linux и производные:
Для CentOS/RHEL/Fedora (программа включена в базовый репозиторий):
После того, как вы установили tmux, давайте взглянем, что у него есть предложить нам.
Основы работы с tmux
Для старта новой сессии tmux (контейнера для индивидуальных консолей, которые будут управляться в tmux) с именем dev, запустите:
Внизу экрана вы увидите индикатор сессии, в которой вы находитесь в данный момент:

Всё сказанное выше продемонстрировано в видео по tmux:
Помните, когда в сессии tmux не остаётся больше панелей, эта сессия закрывается.
Изменение привязки кнопок терминала tmux
В tmux комбинации кнопок, используемые для выполнения определённых действий, называются привязанными клавишами (key bindings). По умолчанию сочетания клавиш состоят из комбинации кнопки Ctrl и другой (других) кнопки(кнопок) — примеры показаны выше.
Если в предшествующих примерах сочетания кнопок по умолчанию показались вам неудобными, вы можете изменить их и настроить либо:
1) на уровне пользователя (создав файл с именем .tmux.conf внутри домашней директории каждого пользователя — не пропустите начальную точку в имени файла), или
2) на уровне системы (посредством файла /etc/tmux.conf, который по умолчанию отсутствует).
В обоих используемых методах, конфигурация на уровни системы перезаписывается настройками каждого пользователя.
Например, давайте предположим, что вы хотите использовать Alt+a вместо Ctrl+b, тогда нужно следующее содержимое в одном из упомянутых ранее файлах:
После сохранения изменений, перезапустите tmux. Вы сможете использовать соответственно Alt+a и «, а также Alt+a и t для разделения окна по горизонтали и показа текущего времени внутри активной панели.
Страница man пакета tmux имеет дополнительные подробности и предложения для привязки кнопок в соответствии с вашими предпочтениями.
Заключение
В этой статье мы объяснили, как использовать tmux для разделения терминала или окна консоли на несколько панелей, которые вы можете использовать для различных целей.
Надеюсь, вы этот инструмент окажется для вас полезным. Если у вас есть свои подсказки по самым востребованным операциям и действиям в tmux, поделитесь ими в комментариях.
Запускаем несколько терминалов Linux в одном окне
Linux предлагает множество способов разбить окно терминала на несколько мини-экранов, что позволяет обеспечить в определенном смысле «многозадачный» режим работы. Это можно сделать как минимум пятью разными способами.
Если вы системный администратор, то скорее всего вам понадобится несколько открытых терминалов: один — для управления веб-сервером, другой — для управления базой данных, третий — для копирования файлов и так далее. Когда открытых вкладок очень много, отслеживать одновременно все процессы становится трудно, что существенно усложняет работу.
Терминальные приложения с возможностью открытия нескольких вкладок уже давно существуют в Linux, и, к счастью, в своё время эта тенденция стала развиваться. Теперь все воспринимают терминал с несколькими вкладками как нечто само собой разумеющееся. И всё же, необходимость переключаться между вкладками у многих вызывает неудобства.
Поэтому следующий шаг — это разбиение на экраны: два или более мини-терминала могут быть открыты одновременно в одном и том же окне. В большинстве сборок Linux есть много инструментов, которые помогут организовать такое разбиение.
Оболочки, терминалы и текстовые консоли Linux
Прежде чем мы начнём рубить окна вдоль и поперёк, напомню разницу между оболочкой, терминалом и консолью:
Пожалуй, это самый гибкий инструмент. tmux — терминальный мультиплексор, работа с которым полностью основана на горячих клавишах. Вам никогда не придется отрывать руку от клавиш в поисках мыши, но придётся изучить, что делают те или иные комбинации клавиш.
Вы можете «наложить» одну вкладку на другую, а затем переключаться между ними. Вы также можете разбить вкладку на два (три, четыре и т. д.) экрана.
Если вы используете tmux в первую очередь для разбиения на экраны, то вам будет достаточно выучить несколько комбинаций:
GNU Screen
По аналогии с tmux в GNU Screen вы можете подключаться и отключаться от уже запущенной сессии и разбивать окно на экраны по горизонтали и вертикали.
Функция разбиения на экраны у Screen работает хорошо, но в ней есть некоторые недочёты, которых нет в tmux. Например, когда вы разбиваете окно терминала, новая копия терминала не запускается на появившейся после разбиения панели. Вы должны нажать Ctrl-A Tab (или Ctrl-J Tab, если вы переопределите комбинацию клавиш, как я) и создать новую оболочку вручную с помощью Ctrl-A C.
В отличие от tmux, разбиение не исчезает, когда вы выходите из терминала, что является конструктивной особенностью, которая в некоторых случаях весьма полезна. Хотя иногда она доставляет неудобства, поскольку вынуждает вас управлять сбросом разбиения вручную.
Тем не менее, GNU Screen — это надёжное и мощное приложение, которое вы можете запустить, если обнаружите, что tmux по каким-то причинам недоступен для вас.
Вот основные команды GNU Screen:
Konsole
Konsole — это стандартный терминал рабочего стола KDE Plasma. Как и сам KDE, Konsole обладает широкими возможностями для настройки.
Среди его многочисленных функций — возможность разбивать окно на экраны. Поскольку Konsole — это графический терминал, вы можете управлять им с помощью мыши, а не клавиатуры.
Для этого нужно перейти в меню View. Вы можете разбить окно по горизонтали или вертикали. Чтобы переключить активную панель, просто выберите нужную вам панель с помощью мыши. Каждая панель представляет собой уникальный терминал, поэтому она может иметь собственную тему и вкладки.
В отличие от tmux и GNU Screen, вы не можете отсоединиться и снова подключиться к сессии Konsole. Как и большинство графических приложений, вы используете Konsole, находясь перед ним физически. Поэтому для удалённого доступа придётся использовать специальное программное обеспечение.
Emacs
Emacs не является терминальным мультиплексором, но его интерфейс поддерживает разбиение окна и изменение размеров. У него также есть встроенный терминал.
В любом случае, если вы ежедневно работаете с Emacs, это означает, что вы по достоинству оценили возможность удобно организовать ваше рабочее пространство. Более того, поскольку модуль Emacs eshell реализован на eLISP, вы можете взаимодействовать с ним, используя те же команды, которые вы используете в самом Emacs, что упрощает копирование и извлечение длинных путей к файлам или вывод команд.
Если вы используете Emacs в графическом окне, вы можете выполнить некоторые действия с помощью мыши. Например, вы можете выбрать активную панель, щёлкнув по ней, или изменить размеры экранов после разбиения окна.
Хотя иногда быстрее использовать сочетания клавиш:
Window manager
Если вы думаете, что текстовый редактор, который может разбить окно на экраны и в каждом из них запустить терминал — это загадка природы, то каково будет ваше удивление, когда выяснится, что ваш рабочий стол может выполнять те же задачи. Рабочие столы Linux, такие как Ratpoison, Herbsluftwm, i3, Awesome и даже рабочий стол KDE Plasma можно настроить так, чтобы каждое окно приложения отображалось в виде фиксированной плитки в сетке рабочего стола.
Вместо окон, плавающих «над» вашим рабочим столом, они остаются в специально отведённом месте, поэтому вы сможете переключаться с одного на другое. Вы можете открыть любое количество терминалов в вашей сети, эмулируя терминальный мультиплексор. Фактически, вы даже можете открыть терминальный мультиплексор в мультиплексоре рабочего стола.
И ничто не мешает вам внутри него открыть Emacs со своим режимом мультиплексора. Никто не знает, что произойдет, если вы продолжите в том же духе, и большинство пользователей Linux согласятся, что лучше не повторять это дома.
В отличие от tmux и GNU Screen, вы не можете отсоединяться и повторно подключаться к «сессии» своего рабочего стола без использования специального программного обеспечения.
Ещё варианты?
Хотите верьте, хотите нет, но есть ещё много вариантов. Существуют и эмуляторы терминалов, такие как Tilix и Terminator, приложения со встроенными терминальными компонентами и многое другое.
А как вы разбиваете на экраны ваш терминал?
На правах рекламы
VDSina предлагает виртуальные и физические серверы под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата. А еще у нас есть вечные серверы 😉
Шпаргалка по tmux
Установка Tmux
Здесь все просто. Для установки программы в Ubuntu выполните следующую команду:
sudo apt install tmux
А для установки в CentOS:
sudo yum install tmux
Синтаксис и опции команды Tmux
Синтаксис команды предельно простой, для создания новой сессии достаточно запустить утилиту без параметров. Для подключения к уже существующей придется использовать дополнительные опции. Вот основной синтаксис:
tmux команда опции
Команды tmux для управления сессиями, которые вы можете использовать:
Конечно, у tmux намного больше команд, но мы не будем рассматривать их в этой статье. В основном, команды будут использоваться для подключения и отключения от сессий, все остальные действия выполняются с помощью горячих клавиш и их тут тоже достаточно.
По умолчанию для активации сочетания клавиш нужно нажать Ctrl+B, отпустить, а потом нажать нужную клавишу. Вот основные сочетания клавиш tmux, которые вам понадобятся:
Для начала работы этих горячих клавиш будет достаточно. Шпаргалка tmux завершена, теперь перейдем к примерам работы с программой.
Как пользоваться tmux
1. Создание сессии
Чтобы создать новую сессию достаточно выполнить команду без параметров:
Также можно создать сессию командой new-session и задать ей удобное имя:
2. Разделение окна на панели
Окно сессии можно разделить на несколько панелей. Чтобы выполнить разделение по горизонтали нажмите Ctrl+b отпустите, а затем нажмите Shift+»:
Аналогично можно разделить панель по вертикали, нажав Ctrl+b, а затем Shift+%:
Размер активной панели можно менять нажав Ctrl+b, а потом Ctrl и стрелка:
А для переключения между панелями используйте клавиши Ctrl+b и стрелка. Сначала не привычно, но потом удобно.
3. Поддержка мышки
По умолчанию поддержка мышки отключена, но если вы работаете в графическом окружении, вы можете её включить. Это даст несколько преимуществ: вы сможете выбирать активную панель мышкой, копировать текст во внутренний буфер обмена, менять размер панелей, использовать прокрутку для просмотра истории вывода и так далее. Для этого откройте файл
/.tmux.conf и добавьте туда следующие строки:
Сохраните изменения, нажмите Ctrl+b :, а потом выполните такую команду чтобы перезагрузить tmux:
Настройка tmux завершена, теперь мышь будет работать.
4. Копирование и вставка
Если вы хотите иметь возможность скопировать в системный буфер обмена, перед тем как выполнять действия мышкой зажмите 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, а также как пользоваться этой утилитой. Я для себя открыл tmux не давно. Слышал о программе довольно давно, но никак не доходили руки попробовать, а потом попробовал и уже не могу без неё обойтись.
5 способов разделить окно терминала в Linux
Оригинал: 5 ways to split your Linux terminal
Автор: Seth Kenlon (Red Hat)
Дата публикации: 8 мая 2020 г.
Перевод: В.Костромин
Дата перевода: 15 мая 2020 г.
Linux предлагает множество способов разделить ваш терминал, чтобы вы могли работать в многозадачном режиме.
Есть ли что-нибудь более привлекательное, чем тепло мерцающий терминал Linux?
Конечно есть: два тепло мерцающих терминала Linux. И даже так: чем больше терминалов, тем лучше.
Много лет назад терминалы были физическими устройствами, но в наше время они просто эмулируются какими-то приложениями на вашем компьютере. Если вы предпочитаете терминал в качестве интерфейса для работы с компьютером, вы, вероятно, знаете, что одного терминала обычно недостаточно. Вам неизбежно приходится открывать новый терминал или новую вкладку, чтобы вы могли работать в нем, пока ваш первый занят компиляцией, или конвертацией, или другой обработкой данных.
Если вы системный администратор, то вам понадобится как минимум четыре открытых окна, когда вы работаете в нескольких системах одновременно.
Терминальные приложения с вкладками уже давно существуют в Linux и завоевали популярность, так как эта особенность современного терминала востребована. И все же, иногда необходимость переключаться между вкладками отвлекает или просто неудобно прыгать то туда, то сюда.
Единственная альтернатива состоит в том, чтобы поделить экран так, чтобы два или больше терминальных окон отображались одновременно в одном окне приложения. И в Linux есть много инструментов, которые помогут вам сделать это.
Оболочки, терминалы, консоли
Прежде чем вы начнете делить экран на кусочки, вы должны понять разницу между терминалом, оболочкой и «консолью». Чтобы представить себе полную картину, прочитайте предыдущую заметку в моем блоге (или ее перевод).
Некоторые приложения позволяют вам разделить вашу оболочку или консоль, в то время как другие позволяют разделить ваш терминал.
Всё управление консолями производится с клавиатуры, что означает, что вам никогда не придется отрывать руку от клавиш в поисках мыши, но для этого вы должны освоить некоторые новые комбинации клавиш.
Если вы используете tmux в первую очередь для разделения экрана, то единственные команды, которые вам действительно нужны, это:
У tmux много преимуществ, в том числе возможность запуска сеанса tmux на одном компьютере, а затем удаленное присоединение к тому же сеансу с другого компьютера.
GNU Screen
Так же, как tmux, GNU Screen является мультиплексором оболочки. Вы можете отсоединиться и снова подключиться к запущенному сеансу, а также разделить экран по горизонтали и вертикали.
Screen немного более неуклюж, по сравнению с tmux. По умолчанию для клавиатурных команд в нем используется комбинация клавиш Ctrl-A с еще какой-то клавишей, но Ctrl-A уже используется в оболочке Bash для того, чтобы перейти в начало строки. Поэтому, если у вас запущен Screen, вы вынуждены нажимать Ctrl-A дважды, чтобы перейти в начало строки. Лично я переопределил эту комбинацию на Ctrl-J с помощью следующей строки в файле $HOME/.screenrc:
Функция разделения экрана в Screen работает хорошо, но в ней отсутствуют некоторые приятные мелочи, которые есть в tmux. Например, когда вы разделяете свою окно оболочки, новая оболочка не запускается на вновь созданной панели. Вы должны перейти в новое пространство с помощью Ctrl-A Tab (или Ctrl-J, если вы переопределите комбинацию клавиш, как я) и вызвать новый экземпляр оболочки вручную с помощью Ctrl-A C.
В отличие от tmux, созданная панель не исчезает, когда вы выходите из оболочки, что является конструктивной особенностью, которая в некоторых случаях весьма полезна, но иногда может вызывать раздражение, поскольку вынуждает вас управлять разделением вручную.
Вот основные команды разделения панели, использующие сочетания клавиш по умолчанию:
Konsole
Функция разделения экрана находится в меню View Konsole. Вы можете разбить окно как по вертикали, так и по горизонтали. Чтобы активировать панель, достаточно щелкнуть по ней мышкой. Каждая панель представляет собой уникальный терминал, поэтому она может иметь собственную тему и вкладки.
В отличие от tmux и GNU Screen, вы не можете выйти из Konsole, оставив его работать в фоновом режиме, чтобы потом подключиться к нему снова. Как и большинство графических приложений, вы можете использовать Konsole только находясь перед ним физически, и теряете доступ к нему, когда находитесь где-то далеко (если вы не используете программное обеспечение удаленного рабочего стола).
Emacs
Emacs, конечно, не является терминальным мультиплексором, но его интерфейс поддерживает разделение и изменение размера окон, и он имеет встроенный терминал.
Если вы так или иначе работаете в Emacs ежедневно, то возможность разделить окно между разными по существу приложениями означает, что вам никогда не придется отказываться от своих привычек и конфорта работы в вашем любимом текстовом редакторе. Более того, поскольку модуль eshell в Emacs реализован на eLISP, вы можете взаимодействовать с ним, используя те же команды, которые вы используете в самом Emacs, что упрощает копирование и вставку длинных путей к файлам или вывод команд.
Если вы используете Emacs в графическом окне, вы можете выполнить некоторые действия с помощью мыши. Это быстрее чем использовать сочетания клавиш, причем некоторые из этих действий более или менее необходимы. Например, вы можете изменить то, какая панель является активной, щелкнув по ней, и вы можете изменить размеры панелей вашего разделенного экрана с помощью мыши.
Но все же приведем некоторые важные клавиатурные команды:
Как и в случае с tmux и GNU Screen, вы можете отключаться от Emacs и снова входить в него до тех пор, пока запущен emacs-client.
Window manager
Если вас удивляет то, что текстовый редактор Emacs может разделить экран и загрузить терминал, представьте, что ваш рабочий стол может делать то же самое. Некоторые рабочие столы, например, Ratpoison, Herbsluftwm, i3, Awesome даже KDE Plasma, если задействовать специальные настройки, могут запускать каждое приложение в отдельном окне, размещая эти окна одно рядом с другим на вашем экране.
Окна в этом случае не «плавают» над вашим рабочим столом, а располагаются каждое в определенной позиции, позволяя вам лекго переключаться от одного из них к другому. Вы можете открыть любое количество терминалов в этих окнах, эмулируя терминальный мультиплексор. Фактически, вы даже можете загрузить терминальный мультиплексор в мультиплексор вашего рабочего стола.
И ничто не мешает вам загрузить Emacs с разделенными буферами внутрь одного из окон. Никто не знает, что произойдет, если вы продолжите в том же духе, и большинство пользователей Linux соглашаются, что лучше не узнавать.
В отличие от tmux и GNU Screen, вы не можете отключать и повторно подключать свой рабочий стол, если не используете программное обеспечение удаленного рабочего стола.
Другие варианты
Хотите верьте, хотите нет, но здесь перечислены не все варианты разделения экрана в Linux. Существуют и другие эмуляторы терминала, в первую очередь среди них можно назвать Tilix и Terminator, которые тоже позволяют разбить экран на части, и приложения со встроенными терминальными компонентами. Вы можете поделиться своим мнением о наиболее удобных способах разделения вашего рабочего пространства в комментариях к этой статье (имеется в виду, конечно, оригинальная статья).
Об авторе























