tmux
tmux — це програма мултиплексор віртуальних консолей, дозволяє легко перемикатись між кількома програмами в одному терміналі, від'єднуватись від програм, залишаючи їх у фоні, і приєднувати їх до іншого терміналу і багато іншого. Він є зручним інструментом для одночасного керування багатьма програмами з інтерфейсом командного рядка. tmux є альтернативою GNU Screen, проте розробляється активніше і використовує ліцензію BSD на відміну від GNU GPL v3 у GNU screen. При запуску tmux створює нову сесію з одним вікном і відображає його на екрані. Внизу екрану відображається лінія статусу з інформацією про поточну сесію, вона також використовується для введення інтерактивних команд.
![]() | |
![]() tmux з трьома панелями | |
| Тип | мультиплексор для віртуальних консолей |
|---|---|
| Розробник | Ніколас Марріотт (Nicholas Marriott) |
| Перший випуск | 20 вересня 2009 року |
| Репозиторій | github.com/tmux/tmux |
| Операційна система | UNIX-подібні |
| GNU фреймворк | Ncurses[1] |
| Мова програмування | C |
| Ліцензія | BSD |
| Вебсайт | tmux.sourceforge.net |
Cесія tmux — це сукупність «псевдо-терміналів» під управлінням tmux, кожна сесія має одне або кілька «вікон» приєднаних до неї, вікно може бути розділене на кілька прямокутних «панелей», у кожній з яких міститься псевдо-термінал. Будь-яка кількість екземплярів tmux може приєднатись до однієї сесії і будь-яка кількість вікон може знаходитись у ній. tmux виходить при завершення всіх сесій.
Cесії tmux є стійкими і можуть пережити випадкові роз'єднання (наприклад роз'єднання ssh) або навмисне від'єднання (за допомогою комбінації клавіш CTRL+b d). Знову приєднатись до сесії можна за допомогою команди tmux attach.
tmux відображає сесії за допомогою клієнта і всі сесії управляються за допомогою єдиного сервера, клієнт і сервер є окремими процесами, комунікація яких відбувається через сокет, що міститься в директорії /tmp.
Поєднання клавіш
tmux може керуватись з підєднаного клієнта, використовуючи комбінації клавіш, що починаються з префікса, стандартний префікс C+b (Ctrl+b), після якого натискається командна клавіша, клавіша-модифікатор (переважно Alt) позначена M
| Комбінація | Опис |
|---|---|
| C-b | Надіслати клієнтові команду-префікс |
| C-o | Перемкнутись на наступну панель у поточному вікні |
| C-z | Призупинити tmux |
| ! | Винести панель у окреме вікно |
| " | Розділити поточну панель горизонтально навпіл |
| # | Перелічити всі буфери вставлення |
| $ | Перейменувати поточну сесію |
| % | Розділити поточну панель вертикально навпіл |
| & | Знищити поточне вікно |
| ' | Вибрати вікно, ввівши його індекс |
| , | Перейменувати поточне вікно |
| - | Видалити останній скопійований у буфер текст |
| . | Перенести поточне вікно, інтерактивно вказавши індекс |
| 0 — 9 | Вибрати вікно з вказаним індексом |
| : | Викликати командний рядок tmux |
| ; | Повернутись до попередньої панелі |
| = | Інтерактивно вибрати, який буфер вставити |
| ? | Показати всі поєднання клавіш |
| D | Інтерактивно обрати, який клієнт від'єднати |
| [ | Перейти у режим копіювання, щоб копіювати текст або переглядати історію |
| ] | Вставити останній скопійований буфер |
| c | Створити нове вікно |
| d | Відєднати поточний клієнт |
| f | Ввести текст для пошуку в поточному вікні |
| i | Показати інформацію про поточне вікно |
| l | Перейти до попередньо відкритого вікна вікна |
| n | Перейти до наступного вікна |
| o | Перейти до наступної панелі в поточному вікні |
| p | перейти до попереднього вікна |
| q | Тимчасово показати індекси панелей |
| r | Примусово оновити поточний клієнт |
| s | Інтерактивно обрати нову сесію для клієнта |
| L | Повернутись до попередньої підєднаної сесії |
| t | Показати час у поточній панелі |
| w | Інтерактивно обрати вікно |
| x | Знищити поточну панель |
| { | Поміняти місцями поточну панель з попередньою |
| } | Поміняти місцями поточну панель з наступною |
| ~ | Показати попередні повідомлення від tmux |
| Page Up | Увійти в режим копіювання і піднятись на один екран вверх |
| Клавіші «Вверх», «Вниз», «Вліво», «Вправо» | Переміщення між панелями |
| M-n | Переміститись до наступного вікна з сигналом або маркером активності |
| M-p | Переміститись до попереднього вікна з сигналом або маркером активності |
| M-o | Поміняти місцями панелі поточного вікна у зворотньому напрямку |
| C + «Вверх», «Вниз», «Вліво», «Вправо» | Змінити розмір поточної панелі з кроком розміром 1 клітинка |
| M + «Вверх», «Вниз», «Вліво», «Вправо» | Змінити розмір поточної панелі з кроком розміром 5 клітинок |
Всі комбінації клавіш можна змінити за допомогю команд bind-key і unbind-key. Щоб зробити зміни постійними, їх можна зберегти у конфігураційному файлі .tmux.conf у домашній директорії користувача.
Функціональність
tmux володіє тим самим функціоналом що і GNU Screen, проте має багато додаткових можливостей, серед них можна виділити наступні:
- Використання клієнт-серверної архітектури, де кожен сервер використовує єдиний сокет і володіє багатьма сесіями, до яких можуть приєднуватись скільки завгодно клієнтів;
- Кращий командний інтерфейс, що дозволяє виконувати більшість команд tmux прямо з терміналу, це полегшує написання скриптів для tmux;
- tmux має багато буферів обміну;
- tmux може автоматично перейменовувати імена вікон відповідно до запущених у них програм;
- можливість використання клавіатурних схем vi та emacs;
- Можливість обмежити розмір вікна;
- Можливість пошуку по тексту у вікні;
- У tmux є поняття «вікно» і «панель», тоді як у GNU screen є тільки вікна. Кожне вікно може містити кілька панелей;
- Статусна лінія tmux легша для сприйняття і використання;
- Вихідний коди tmux більше відповідає сучасним стандартам, відповідно полегшуючи розширення;
- tmux обмежує розмір вікон розмірами терміналу.
Зноски
Джерела
- Nicholas Marriott. Tmux manual. Архів оригіналу за 31 березня 2014. Процитовано 27 квітня 2014 року.
- Офіційна сторінка tmux. Архів оригіналу за 9 січня 2012. Процитовано 27 квітня 2014 року.
- Nicholas Marriott. tmux FAQ. Архів оригіналу за 27 квітня 2014. Процитовано 27 квітня 2014 року.

