[Перевод] Запускаем несколько терминалов Linux в одном окне

Linux предлагает множество способов разбить окно терминала на несколько мини-экранов, что позволяет обеспечить в определенном смысле «многозадачный» режим работы. Это можно сделать как минимум пятью разными способами.

1x3z6cir34opnfg_4ag6qsbowdy.png


Казалось бы, что может быть лучше тёплого мерцания терминала Linux? -)
Оказывается, вот что: тёплое мерцание двух терминалов! На самом деле, чем больше, тем лучше.
Когда-то терминалы были физическими устройствами, но сегодня это просто приложения на вашем компьютере. Если вы активно пользуетесь терминалом, вы, вероятно, много раз сталкивались с тем, что одного терминала часто бывает недостаточно. И тогда вам нужно открыть новый терминал (новое окно), чтобы вы могли работать в нём, пока первый терминал занят компиляцией, конвертацией или другой обработкой данных.

Если вы системный администратор, то скорее всего вам понадобится несколько открытых терминалов: один — для управления веб-сервером, другой — для управления базой данных, третий — для копирования файлов и так далее. Когда открытых вкладок очень много, отслеживать одновременно все процессы становится трудно, что существенно усложняет работу.

Терминальные приложения с возможностью открытия нескольких вкладок уже давно существуют в Linux, и, к счастью, в своё время эта тенденция стала развиваться. Теперь все воспринимают терминал с несколькими вкладками как нечто, само собой разумеющееся. И всё же, необходимость переключаться между вкладками у многих вызывает неудобства.

Поэтому следующий шаг — это разбиение на экраны: два или более мини-терминала могут быть открыты одновременно в одном и том же окне. В большинстве сборок Linux есть много инструментов, которые помогут организовать такое разбиение.

Оболочки, терминалы и текстовые консоли Linux


Прежде чем мы начнём рубить окна вдоль и поперёк, напомню разницу между оболочкой, терминалом и консолью:

  • По сути своей оболочка — это интерпретатор командной строки, который работает где-то «под» вашим рабочим столом. Оболочка может работать незримо, но её команды по-прежнему будут выполняться (например, оболочка запускает ваш пользовательский сеанс).
  • Терминал — это приложение, которое в Linux работает на графическом сервере (например, X11 или Wayland) с загруженной в него оболочкой. Терминал работает только тогда, когда у вас запущено окно терминала. Грубо говоря, это интерфейс для оболочки.
  • «Текстовая консоль» или «виртуальная консоль» — это термин, обычно используемый для обозначения оболочки, работающей вне вашего рабочего стола. Вы можете перейти к виртуальным консолям, нажав Alt-Ctrl-F1 (Alt-Ctrl-F2 и так далее). Комбинация клавиш может отличаться в зависимости от вашего дистрибутива.


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

tmux


rzocs7s5nuo98qilt90migws_gq.png


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

Вы можете «наложить» одну вкладку на другую, а затем переключаться между ними. Вы также можете разбить вкладку на два (три, четыре и т. д.) экрана.

Если вы используете tmux в первую очередь для разбиения на экраны, то вам будет достаточно выучить несколько комбинаций:

  • Ctrl-B % разбить по вертикали (один экран — слева, другой — справа)
  • Ctrl-B" разбить по горизонтали (один экран — сверху, другой — снизу)
  • Ctrl-B O переключиться между панелями
  • Ctrl-B ? открыть справку
  • Ctrl-B d покинуть tmux и оставить его работать в фоновом режиме


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

GNU Screen


fjayefrb1cnk5gr3y-bviqnxn8o.png

По аналогии с tmux в GNU Screen вы можете подключаться и отключаться от уже запущенной сессии и разбивать окно на экраны по горизонтали и вертикали.

Однако этот инструмент не такой гибкий, как tmux. Вводная комбинация GNU Screen Ctrl-A также является командой для перехода к началу строки в Bash. Поэтому при запущенном мультиплексоре, чтобы перейти к началу строки, вы должны нажать Ctrl-A два раза, а не один. Так что, лично я обычно меняю эту комбинацию на Ctrl-J в ​​$ HOME / .screenrc:

escape ^jJ


Функция разбиения на экраны у Screen работает хорошо, но в ней есть некоторые недочёты, которых нет в tmux. Например, когда вы разбиваете окно терминала, новая копия терминала не запускается на появившейся после разбиения панели. Вы должны нажать Ctrl-A Tab (или Ctrl-J Tab, если вы переопределите комбинацию клавиш, как я) и создать новую оболочку вручную с помощью Ctrl-A C.

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

Тем не менее, GNU Screen — это надёжное и мощное приложение, которое вы можете запустить, если обнаружите, что tmux по каким-то причинам недоступен для вас.

Вот основные команды GNU Screen:

  • Ctrl-A | разбить по вертикали (один экран — слева, другой — справа)
  • Ctrl-A S разбить по горизонтали (один экран — сверху, другой — снизу)
  • Ctrl-A Tab переключиться между панелями
  • Ctrl-A ? открыть справку
  • Ctrl-A d покинуть Screen и оставить его работать в фоновом режиме (чтобы вернуться обратно, используйте screen -r)


Konsole


vcrocybl6b5uywfeuawnbnykrlu.jpeg


Konsole — это стандартный терминал рабочего стола KDE Plasma. Как и сам KDE, Konsole обладает широкими возможностями для настройки.

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

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

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

Emacs


qpvldjf0eohv8p1khgfcgcdfldm.jpeg


Emacs не является терминальным мультиплексором, но его интерфейс поддерживает разбиение окна и изменение размеров. У него также есть встроенный терминал.

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

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

Хотя иногда быстрее использовать сочетания клавиш:

  • Ctrl-X 3 разбить по вертикали (один экран — слева, другой — справа)
  • Ctrl-X 2 разбить по горизонтали (один экран — сверху, другой — снизу)
  • Ctrl-X O переключиться между панелями (это можно сделать и мышью)
  • Ctrl-X 0 (0 — это нуль) закрыть текущую панель


По аналогии с tmux и GNU Screen, вы можете отключаться и подключаться к сессии Emacs через emacs-client.

Window manager


vgn2ebcxa7ptfji_zogbdkokie4.jpeg


Если вы думаете, что текстовый редактор, который может разбить окно на экраны и в каждом из них запустить терминал — это загадка природы, то каково будет ваше удивление, когда выяснится, что ваш рабочий стол может выполнять те же задачи. Рабочие столы Linux, такие как Ratpoison, Herbsluftwm, i3, Awesome и даже рабочий стол KDE Plasma можно настроить так, чтобы каждое окно приложения отображалось в виде фиксированной плитки в сетке рабочего стола.

Вместо окон, плавающих «над» вашим рабочим столом, они остаются в специально отведённом месте, поэтому вы сможете переключаться с одного на другое. Вы можете открыть любое количество терминалов в вашей сети, эмулируя терминальный мультиплексор. Фактически, вы даже можете открыть терминальный мультиплексор в мультиплексоре рабочего стола.

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

В отличие от tmux и GNU Screen, вы не можете отсоединяться и повторно подключаться к «сессии» своего рабочего стола без использования специального программного обеспечения.

Ещё варианты?


Хотите верьте, хотите нет, но есть ещё много вариантов. Существуют и эмуляторы терминалов, такие как Tilix и Terminator, приложения со встроенными терминальными компонентами и многое другое.

А как вы разбиваете на экраны ваш терминал?


На правах рекламы


VDSina предлагает виртуальные и физические серверы под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата. А еще у нас есть вечные серверы ;)

9facf4a348ef01048b4eb5e16ae66daa.png

© Habrahabr.ru