Як використовувати tmux в Linux (і чому він краще, ніж екран)

Команда Linux tmux є термінальним мультиплексором, подібним до екрану. Його прихильників багато і голосні, тому ми вирішили порівняти їх. Чи справді tmux кращий, чи це просто випадок віддати перевагу тому, що ви знаєте?

Зміст

tmux проти екрану

І екранні команди tmux і GNU є термінальними мультиплексорами. Вони дозволяють вам мати кілька вікон в одному вікні терміналу, а також переходити між ними. Вікно можна розділити на панелі, кожна з яких дає вам незалежний командний рядок.

Ви також можете від’єднати сеанс, і він стане безголовою сутністю, що працює у фоновому режимі — ви навіть можете закрити вікно терміналу, яке його запустило. Коли ви будете готові, ви можете відкрити нове вікно терміналу та повторно підключити все ще запущений сеанс. Ви також можете зробити це через SSH-з’єднання.

Ви можете від’єднати сеанс на одному комп’ютері, повернутися додому та ввійти на віддалений комп’ютер. Після повторного підключення ви можете повторно підключити фоновий сеанс і знову використовувати його в інтерактивному режимі.

Що таке екранна команда?

Команда екрана також є термінальним мультиплексором, і вона наповнена параметрами. Щоб дізнатися про все, що ви можете з ним зробити, перегляньте нашу детальну статтю.

Цього разу ми збираємося зосередитися на tmux. По ходу ми згадаємо, як екран обробляє ту саму функцію або функцію.

Лише одне дратувало нас на екрані. Ми розповімо про це, коли дійдемо до цього, і подивимося, чи буде tmux краще.

Встановлення tmux

Хоча screen зазвичай встановлюється за замовчуванням у популярних дистрибутивах Linux, tmux ні. Щоб встановити tmux на Ubuntu, введіть наступне:

sudo apt-get install tmux

На Manjaro ви можете використовувати pacman:

sudo pacman -Sy tmux

У Fedora 31 tmux вже встановлено.

Початок сеансу tmux

Щоб запустити tmux, просто введіть його та натисніть Enter:

tmux

У вікні терміналу буде показано рядок стану, коли ви перебуваєте в сеансі tmux.

У правій частині рядка стану показано ім’я хоста, а також час і дату. Ліворуч показує таку інформацію, пов’язану з сеансом:

  Як використовувати команду top Linux (і розуміти її вихід)

[0]: Це назва сеансу. За замовчуванням вони нумеруються, починаючи з нуля. Нижче ми розповімо, як можна дати змістовні назви сесіям.
0:bash*: 0 означає, що це перше вікно в цьому сеансі. Єдиний процес, що виконується в цьому сеансі, – це bash. Якщо ви запускаєте програму, тут з’явиться її назва. Зірочка

означає, що це вікно, на яке ви дивитеся. Кожного разу, коли ви створюєте нове вікно в сеансі tmux, його номер вікна та ім’я програми, що працює в ньому, додаються до рядка стану.

Команда екрана не дає вам рядок стану. Ви повинні бути сліпими і покладатися на свій розум, щоб знати, що відбувається, що вимагає трохи практики.

Позитивним є те, що ви не втратите ряд вікон терміналу. Звичайно, ви зазвичай розширюєте вікно терміналу, щоб зробити використання термінального мультиплексора вигідним. У цьому випадку втрата одного рядка в рядку стану не є великою проблемою. Ми залишили тут зображення вікон терміналу в розмірі за замовчуванням, щоб ви могли бачити інформацію.

Команди надаються tmux за допомогою натискання клавіш, і це дві частини. Спочатку ви натискаєте Ctrl+B, щоб привернути увагу tmux. Потім ви швидко натискаєте наступну клавішу, щоб надіслати команду totmux. Команди подаються натисканням літер, цифр, розділових знаків або клавіш зі стрілками.

На екрані все те саме, за винятком того, що ви натискаєте Ctrl+A, щоб привернути його увагу.

Щоб закрити вікно, натисніть Ctrl+B, а потім швидко натисніть X. Рядок стану стане жовтим. Потім вам буде запропоновано підтвердити, що ви хочете закрити вікно.

Натисніть Y, щоб закрити вікно, або N, якщо ви передумали. Після цього не потрібно натискати Enter; Y або N достатньо, щоб зареєструвати свій вибір.

Якщо натиснути Y, вікно закриється. Оскільки це єдине вікно в цьому сеансі, сеанс припиняється.[exited]Сеанс tmux закрито, і ви повернетеся до командного рядка, з якого запустили tmux. Ви побачите “

” у вікні терміналу.

Це може здатися, що це стверджує очевидне, але це підтвердження того, що ви закрили сеанс і не залишили його відокремленим і запущеним. Нижче ми обговоримо сеанси відокремлення.

Початок іменованого сеансу tmux

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

tmux new -s geek-1

Щоб запустити tmux з іменем сеансу, скористайтеся командою new (новий сеанс) і параметром -s (назва сеансу). Наша сесія буде називатися «geek-1», тому ми вводимо наступне:

Коли сеанс tmux завантажується, «geek-1» відображається як перший запис у рядку стану, крайній ліворуч.

Сеанс tmux з назвою

Додавання більше Windows Щоб створити нове вікно в поточному сеансі, натисніть Ctrl+B, а потім C. У поточному сеансі ви отримаєте порожнє вікно терміналу. Тож у цьому новому вікні щось буде працювати, почнемо команда dmesg

dmesg -w

з опцією -w (слідувати):

Тепер у нас є два вікна в сесії; один працює зверху, а інший dmesg. Проте ми можемо бачити лише по одному (докладніше про це згодом).

  Як використовувати зелену адресу в Linux

Подивіться на ліву частину рядка стану. Ми все ще в сеансі tmux “geek-1”. У вікні нуль працює top, а у вікні 1 працює dmesg. Зірочка

після того, як dmesg повідомляє, яке вікно видно.
Щоб переходити між вікнами, натисніть Ctrl+B, а потім одну з наступних клавіш:
N: Відобразити наступне вікно.

P: Відобразити попереднє вікно.

Від 0 до 9: відобразити вікно з номерами від 0 до 9.

Ви також можете вибрати вікно зі списку. Якщо натиснути Ctrl+B, а потім W, з’явиться список вікон.

Щоб перемістити жовту смугу виділення, натискайте стрілки вгору або вниз, Home або End. У нижній частині дисплея відображається попередній перегляд вмісту у виділеному вікні.

Натисніть Enter, щоб перейти до виділеного вікна, або Esc, щоб залишити список вікон без перемикання.

Від’єднання та приєднання сеансів

Якщо натиснути Ctrl+B, а потім D, ви від’єднаєте сеанс. Він продовжуватиме працювати у фоновому режимі, але ви не зможете його бачити чи взаємодіяти.

Ми розпочали зверху сесії, тож у нас є запущений процес для демонстрації. Потім ми натискаємо Ctrl+B, а потім D. Сеанс зникає і стає фоновим.

Повертаємося до початкового вікна терміналу. Є повідомлення від tmux про те, що сеанс відокремлено. Це також нагадує нам назву, яку ми дали сесії. Це зручно, оскільки це те, що ми використовуємо, щоб підключити до фонового сеансу, а потім відновити його до інтерактивного.

tmux attach-session -t geek-1

Щоб приєднати відокремлений сеанс, ми будемо використовувати зрозумілу команду attach-session з параметром -t (цільовий сеанс). Ми також надамо назву сеансу, який ми хочемо відкликати.

Набираємо наступне:

Наш сеанс повертається і знову стає видимим інтерактивним сеансом.

Будь-які тривалі або безперервні процеси, які ви запустили перед від’єднанням сеансу, все одно працюватимуть у фоновому режимі (якщо вони не закінчилися), коли ви приєднаєте сеанс.

екран може це зробити, але не так інтуїтивно.

tmux new -s geek-2

Обробка кількох сеансів

dmesg -w

Давайте відкриємо інше вікно терміналу та почнемо новий сеанс tmux під назвою «geek-2»:

У цьому сеансі ми запустимо dmesg:

Тепер у нас є оригінальний сеанс tmux «geek-1» і новий сеанс під назвою «geek-2».

Рядок стану показує нам, що цей сеанс називається «geek-2», і в ньому є одне вікно, в якому запущено dmesg.

Якщо ми натиснемо Ctrl+B, а потім D, ми від’єднаємо цей сеанс.

Повернувшись у сеанс tmux «geek-1», ми натискаємо Ctrl+B, а потім S, щоб побачити список сеансів tmux.

Щоб було зрозуміло, це список сесій. Подібне відображення, яке ми бачили раніше, являло собою список вікон за один сеанс.

Ви можете переміщати смугу виділення жовтого кольору, натискаючи стрілки вгору та вниз, Home та End. У нижній частині відображається попередній перегляд вмісту виділеного сеансу.

Якщо натиснути стрілку вправо, відобразяться вікна виділеного сеансу.

  Як встановити Darktable на Linux

Натисніть Enter, щоб перейти до виділеного сеансу або вікна, або Esc, щоб залишити список сеансів, не змінюючи сеанси. Якщо ви виберете новий сеанс, поточний від’єднається, а той, який ви вибрали, буде приєднано.

Перед цим ми відокремили сеанс «виродка-2». Однак ви можете зробити це за допомогою сеансів, які все ще приєднані до вихідних вікон терміналу. Коли ви це зробите, будь-які зміни на екрані з’являться одночасно в обох сеансах tmux.

Команда екрана також може зробити це за допомогою подібного набору команд.

Робота з вікнами

Якщо натиснути Ctrl+B, а потім поставити подвійні лапки («»), ви розділите вікно по горизонталі на дві панелі.

Це впливає лише на поточне вікно; інші в сесії не будуть змінені. Ми використали команду tmux ls на верхній панелі, щоб відобразити список вікон у цьому сеансі. Їх два, і рядок стану говорить нам, що ми в першому вікні. Якщо ми перейдемо до нульового вікна, натиснувши Ctrl+B, а потім 0 ​​(нуль), ми побачимо, що воно так само, як ми його залишили.

Це два незалежні командні рядки, а не два представлення в одному вікні; вони є різними і окремими оболонками. Ми можемо показати це, запустивши іншу команду на кожній панелі.

Набираємо наступне:

uname -a

ls -hl

Щоб перейти від однієї панелі до іншої, натисніть Ctrl+B, а потім стрілку вгору, вниз, вліво або вправо.

Якщо натиснути Ctrl+B, а потім знак відсотка (%), поточна панель розбивається по вертикалі.

Натисніть Ctrl+B, а потім Q, щоб змусити tmux на короткий час блимати номер кожної панелі.

Ці числа використовуються в підказках і повідомленнях від tmux. Натисніть Ctrl+B, а потім X, щоб закрити поточну панель. Рядок стану змінюється на жовтий, і вам буде запропоновано підтвердити, що ви хочете закрити номер цієї панелі. Натисніть Y, щоб видалити панель, або N, щоб залишити все як є.

Якщо натиснути Y, панель буде видалена.

Команда screen також має панелі, але, знову ж таки, вони менш інтуїтивно зрозумілі у використанні. Нас дратує на екрані, якщо ви від’єднаєте сеанс з панелями, вони зникнуть, коли ви знову під’єднаєте цей сеанс. Це дуже швидко старіє.

A Ctrl+B Шпаргалка

Нижче ми включили шпаргалку з різними командами, які ви можете використовувати в tmux.
Команди сеансу
S: Список сесій.
$: перейменувати поточний сеанс.

D: Від’єднати поточний сеанс.

Ctrl+B, а потім ?: Відобразити сторінку довідки в tmux.
Віконні команди
C: Створіть нове вікно.
,: Перейменувати поточне вікно.
W: Перелічіть вікна.
N: Перейти до наступного вікна.

P: Перехід до попереднього вікна.

Від 0 до 9: перехід до вказаного номера вікна.
Команди панелі
%: створити горизонтальний розкол.
«: Створіть вертикальний розкол.
H або стрілка вліво: перейдіть до панелі ліворуч.
I або стрілка вправо: перейдіть до панелі праворуч.
J або стрілка вниз: перейдіть до панелі нижче.
K або стрілка вгору: перейдіть до панелі вище.
З: Коротко показати номери панелей.
O: Переміщення панелями в порядку. Кожне натискання переносить вас до наступного, поки ви не переглянете їх усі.
}: Поміняйте положення поточної панелі на наступну.

{: Поміняйте положення поточної панелі на попередню.

X: закрити поточну панель.

Як вони порівнюють

З точки зору функціональності, екран і tmux працюють однаково і пропонують однакові основні функції. Це спосіб доступу до цих функцій, який помітно відрізняється. tmux пропонує більш гладкі, зручніші способи доступу до різних функцій. Однак це не єдина різниця.

Можливість перейменовувати сеанси та вікна в tmux є чудовою, і той факт, що він зберігає панелі, коли ви повторно підключаєте сеанс, змінює гру.

екран, з іншого боку, повністю втрачає панелі, коли ви від’єднуєте та повторно підключаєте сеанс. Це майже досить дратує, щоб змусити вас уникнути від’єднання.

У tmux є набагато більше, включаючи його неймовірно гнучкі можливості написання сценаріїв. Ви зобов’язані це перевірити.