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

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


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

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

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

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

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

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


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

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

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

tmux



Пожалуй, это самый гибкий инструмент. 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




По аналогии с 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



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

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

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

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

Emacs



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



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

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

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

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

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


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

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



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


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

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

Какой мультиплексор для терминала используете вы?

  • 0,0%Choices0
  • 50,0%Tmux121
  • 13,6%GNU Screen33
  • 6,2%Konsole15
  • 2,1%Emacs5
  • 4,6%Tilix11
  • 14,5%Terminator35
  • 9,1%Свой вариант (расскажите о нём в комментариях)22
VDSina.ru — хостинг серверов
Серверы в Москве и Амстердаме

Комментарии 41

    0

    А как у tmux с размерами scrollback, можно поставить «бесконечный» для какой-то отдельной «сессии»?
    Пользуюсь Yakuake.

      0

      Он изначально бесконечный, вроде как.

        +2

        Вроде, он изначально около 2000 строк.

        0

        tmux — для серверов или для тех терминалов, которые не поддерживают многооконность: rxvt, alacritty, st и т.п.

          0
          Или для тех, кому хочется однородного управления рабочим пространством при переездах между разными осями и/или эмуляторами терминалов:)

          Один раз научился, написал удобный конфиг — и везде работает примерно одинаково
            0

            Это отменяет возможную необходимость «бесконечной» прокрутки?

        +1
        Emacs упомянули, а как же забыли про vim? Он тоже умеет разбивать окна.
        Shell-плагины у него тоже имеются.
          0
          Согласен — тоже за vim!!!
          +1
          Byobu
            0

            Ну это так-то просто декорированный screen.

            0

            После того как дома пересел на i3wm — жизнь заиграла новыми красками.
            Tmux иногда на серверах.

              +1

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

                0
                Так-то emacs тоже может быть тайловым оконным менеджером. github.com/ch11ng/exwm
                  0

                  Использую тайловый WM (в настоящий момент i3), а если нет возможности — Tilix. Но вот с удаленными сессиями приходится использовать Tmux, что мне не нравится: тайлинг в тайлинге, множатся хоткеи, нарушает привычное окружение.


                  Кстати, может быть кто-нибудь знает, как сделать что-то вроде Tmux, но с несколькими эмуляторами терминала (т.е. продолжать пользоваться WM и/или эмулятором терминала с табами/тайлами, будучи подключенным к удаленной системе)? SSH Multiplexing + хоткей уменьшает время задержки открытия нового удаленного терминала, но он все же открывается в домашнем каталоге (или где-то еще по-умолчанию), а не в каталоге, где был предыдущий терминал.

                    0
                    Тоже пользуюсь i3, позвольте спросить какой у Вас скринсейвер? Я использую i3lock вместе с xautolock, но последний не умеет засекать видео в браузере, например, в ютубе. С mpv умеет, с браузером нет.
                      0

                      Никакого :)
                      Я недавно начал пользоваться i3, ещё не всё настроил.

                        0
                        В таком случае внесу свои пять копеек: конфиг. Там ничего особенного, просто vim-like биндинги перенесены на «hjkl» вместо «jkl;», настроены медиа-клавиши и прочие мелочи. Вам в любом случае придётся его твикать под себя и свой дистр. Happy hacking!
                      0
                      Чтобы не было проблем с «тайлингом в тайлинге», можно использовать abduco
                      github.com/martanne/abduco
                      0
                      Asbru-Connection (бывший Pac-manager). Очень радует в плане функционала.
                        0
                        Terminator на основной машине. Tmux на серверах без GUI.
                          0

                          А как же guake ?

                            0
                            Да, он. Но иногда не хватает поиска и перемещения табов. Есть ещё tilda.
                            0
                            ALT-F1..ALT-F11
                              0
                              xfce4-terminal фиксированного размера в количестве 4 шт на монитор плюс focus follow mouse (click-less focus).
                              Если нужен другой размер (не 1/4 екрана), то растягиваю по необходимости
                              И пачка рабочих столов, отдельно для браузеров, месенжеров, серверных терминалов, для программирования и т.д.
                              Окна никогда не перекрываются.
                                0

                                Мне кажется, вы изобрели тайловый оконный менеджер из xfce.

                                0

                                Юзаю i3-wm

                                  0
                                  Попробуйте Tilix
                                  gnunn1.github.io/tilix-web
                                    0
                                    KiTTY — очень удобный вариант терминала и он менее прожорливый чем Terminator. Но использую часто сразу оба, чтобы визуально отличать где рабочие сессии, а где локальные. При удаленке на системы без GUI чаще всего tmux, реже screen, а на рабочей машине F1..F6 хватает за глаза.
                                      +1
                                      screen удобен тем, что поставляется с дистрибутивом во многих системах, в то время как остальные нужно специально устанавливать. Это часто решает выбор скрин менеджера, если нет рута, или ограничение на софт.

                                      В голосовалке следовало сделать множественный выбор
                                        0
                                        В одном из ведущих корп. дистрибутивов это уже с точностью до наоборот: access.redhat.com/solutions/4136481

                                        After careful consideration, the decision was made to deprecate the screen package and instead recommend the tmux package. The screen utility has an old code base that is not easy to maintain and with little activity in the upstream community. The tmux package was viewed as having a better code base to maintain and build new features upon. Maintaining both within RHEL was becoming increasingly unfeasible when considering keeping up with CVE security errata, government security certifications, and similar requirements. For those concerned with DISA STIG requirements, tmux satisfies the requirement as an alternative to screen.

                                        The screen utility was marked as deprecated with the release of RHEL 7.6 and was not included as part of RHEL 8.0.
                                        0
                                        xmonad
                                          0

                                          sway + tilix + emacs

                                            +1

                                            Почему-то не знал, что в Konsole так можно. Спасибо, буду пользоваться :-)

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

                                              Расширение для GNOME extensions.gnome.org/extension/1509/drop-down-terminal-x
                                              image

                                              Когда-то в далеком 2016-м году пользовался оригинальным расширением github.com/zzrough/gs-extensions-drop-down-terminal.
                                              Замечательное, максимально нативное, однако мне было неудобно без поддержки вкладок. Сделал простенький механизм вкладок, но так и не дождался, когда мой pull-request примут или отторгнут и fork-нул под новым именем, который живет теперь своей жизнью. Если кто-то имеет силы и желание добавить split-view — будет очень круто. Под капотом там хоть и специфический, но js.

                                              image
                                                0

                                                Под mac есть что-то похожее?

                                                  +1

                                                  iTerm2
                                                  Ну или tmux поставить.

                                                  0
                                                  А в чём преимущество tmux перед tilix? Я сейчас использую tilix, tmux пробовал, но как-то он меня не впечатлил. Но, судя по опросу, большинство предпочитает именно его.
                                                    0

                                                    Ну я бы не сказал, что большинство, думаю это от задач зависит. Админам и девопсам надо часто на удаленные сервера ходить, там им удобнее ssh/mosh + tmux/screen и тд. Мне как разработчику, развращенному k8s, надо много терминалов локально, для этого tilix использую, а tmux вообще без надобности, запрет редактировать на проде уже лет 5 не меньше

                                                    0
                                                    Использую и tmux, и тайловый оконный менеджер i3 — по обстоятельствам.

                                                    Кстати, при отображении нескольких терминалов на одном экране часто возникает желание, чтобы при изменении размера окна менялось не число столбцов и строк, а размер шрифта. Т.е. хотелось бы, например, зафиксировать число столбцов (80) и чтобы при изменении размеров окна автоматически менялся размер шрифта. Похожая функциональность есть в PuTTY для Windows («What to do when the window is resized» --> «Change the size of the font»), но вот под Linux эмулятора терминала с такой возможностью так не нашел. Возможно, плохо искал?
                                                      0
                                                      tmux для удалённого доступа. i3wm на десктопе.

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

                                                      Самое читаемое