tmux je moderní, vysoce konfigurovatelný terminálový multiplexer, podporující skriptování, klávesové zkratky ve stylu vi a Emacs, práci s okny a podokny.
28.3.2012 00:00 | David Adamczyk | přečteno 8045×
Tmux je součástí operačního systému OpenBSD, jedná se o alternativu k programu GNU Screen, která je šířena pod BSD licencí. Funguje jako terminálový multiplexer, který poskytuje virtuální okna a podokna v terminálu pro oddělení jednotlivých konzolových aplikací. Mezi těmito okny se můžete přepínat v rámci jedné relace (session), případně v jednom okně vytvořit několik podoken a tyto podokna různě seskupovat. Takto si můžete připravit pracovní prostředí, které Vám bude práci maximálně usnadňovat jestliže pracujete často v terminálu (ať už v grafickém, nebo textovém režimu). Díky jednoduché práci s okny virtuálních konzolí nemusíte používat emulátor terminálu podporující taby (záložky) a nemusíte otevírat několik oken terminálu současně, což je obvykle nepříjemné a znesnadňuje to orientaci mezi jednotlivými okny. Tmux je založen na principu klient-server modelu, kde server umožňuje běh více sezení. Každé okno s aplikací je nezávislou entitou, která může být použita ve více sezeních. Ke každému takovémuto sezení může přistupovat více klientů. Podporuje interaktivní menu, stavový řádek informující uživatele, umí rovněž klávesové zkratky ve stylu emacsu a vi, příkazový režim ve stylu vi včetně automatického doplňování, UTF8, kopírování a vkládání pomocí mnohonásobných bufferů a pro příznivce eyecandy nesmíme zapomenout na podporu 256 barev v terminálu ;-) Tmux je k dispozici pro Linux, FreeBSD, NetBSD, Solaris a AIX. Pro instalaci do svého systému použijte buď předem připravený balíček, nebo se pusťte do kompilace programu ze zdrojových kódů, které naleznete na adrese: http://tmux.sourceforge.net/
Při prvním spuštení tmuxu je vytvořeno nové sezení, jedno nové pracovní okno a stavový řádek, umístěný na spodní straně okna. Stavový řádek poskytuje informace o aktuálním sezení, oknech a jejich stavech, případně další informace, nebo jej můžete použít pro interaktivní zadávání příkazů.
Užitečné příkazy, které budete při práci s tmuxem jistě potřebovat je vypsání všech příkazů, do terminálu zadejte:
$ tmux list-commandsvypsání všech klávesových zkratek pomocí příkazu
$ tmux list-keysa informace o všech oknech, podoknech a sezenich pomocí příkazu
$ tmux infoběhem hrátek s konfiguračním souborem se může hodit také příkaz
$ tmux source-file ~/.tmux.conf
Abychom se mohli s klientem připojit k nějakému sezení, je toto sezení vhodné nejprve vytvořit (pokud ještě není vytvořeno, nebo jen chceme vytvořit nové). Nové sezení vytvoříte příkazem
$ tmux new -s session_nameTeď máte vytvořeno jedno, nebo více běžících sezení, ke kterým se můžete připojovat, nebo mezi nimi libovolně přepínat. Seznam všech běžících sezení vypište příkazem
$ tmux list-sessions. Pokud chcete klienta připojit ke konkrétnímu sezení napište do terminálu příkaz
$ tmux attach -t session_name, kde uvedete jméno konkrétního sezení, ke kterému se chcete připojit. Přepnout se z jednoho sezení do jiného provedete příkazem
$ tmux switch -t session_nameZejména při práci na vzdáleném stroji se může hodit odpojení se od sezení (pro případ, že se k němu chcete připojit například odjinud). Pro odpojení slouží příkaz
$ tmux detachzapsaný do terminálu ve kterém běží klient připojen na příslušné sezení, ze kterého se chcete odpojit (je možné použít i klávesovou zkratku, která je uvedena v textu dále). Každé sezení je indikováno číslem (indexem sezení) v hranatých závorkách na stavovém řádku (první sezení je označeno indexem 0) nebo libovolným řetězcem pokud jste si sezení přejmenovali. Jestliže máte na svém počítači spuštěno několik sezení Tmuxu a pořebujete se mezi nimi pomocí jednoho klienta přepínat, nejsnáze tak učiníte vyvoláním menu klávesovou zkratkou [Ctrl-b s]. Toto menu zobrazí všechna aktivní sezení, jednoduchým výběrem jej můžete změnit. Naopak k předchozímu sezení se vrátíte stiskem [Ctrl-b L]. Pokud potřebujete během práce zastavit terminál ve kterém pracujete a přejete si pozastavit výpis provedete to klávesovou zkratkou [Ctrl-b z]. Pro odpojení klienta od sezení slouží [Ctrl-b d], chcete-li vybrat konkrétního klienta použijte [Ctrl-b D]. Uživatelé, kteří si budou během práce s Tmuxem připadat ztraceni mohou kdykoliv vyvolat seznam klávesových zkratek stisknutím [Ctrl-b ?]. Pracujete-li s tmuxem na vzdáleném serveru možná oceníte vynucené překreslení připojeného klienta stiskem [Ctrl-b r].
Příkazy, které chcete provádět máte možnost volat v příkazovém řádku nebo pomocí klávesových zkratek. Seznam všech příkazů, které Tmux umí provádět vypíšete příkazem
$ tmux list-commandsVětší množství příkazů zadávejte oddělením středníkem. Všechny tyto příkazy, které jsou odděleny středníkem, budou vykonávány postupně v pořadí tak jak jsou zapsány.
$ tmux prikaz1; prikaz2; prikaz3Přejete-li si klávesové zkratky z nějakého důvodu pozměnit (například se kryjí s klávesovými zkratkami Vašeho správce oken), případně chcete vytvořit nové klávesové zkratky provedete to následujícím způsobem:
unbind-key ^A - odebere klávesovou zkratku Ctrl-A bind-key ^A select-pane -t :.+ přiřadí příkaz klávesové zkratce Ctrl-ANezapomeňte, že klávesové zkratky se vyvolávají použitím prefixu (standardně [Ctrl-b]). Pokud budete chtít vyvolat příkaz, který jsme si právě nastavili použijeme [Ctrl-b + Ctrl-A] Jak bylo právě řečeno, dost často je problém klávesových zkratek v prostředí ve kterém pracujete. Jestliže se Vám standardní prefix [Ctrl-b] kryje s jinou klávesovou zkratkou, můžete jej jednoduše změnit na jiný prefix následovně:
$ tmux set-option -g prefix C-a; unbind-key C-b; bind-key C-a send-prefixTeď budou všechny klávesové zkratky volány po použití prefixu [Ctrl-a]. To znamená, že například odpojení klienta od sezení vyvoláte stiskem [Ctrl-a d]. Zajímavou možností je nastavení klávesových zkratek nejčastěji používaným aplikacím a předávání parametrů. Ukážeme si jak přiřadit klávesovou zkratku programu w3m, který bude otevřen v novém okně a jak mu předat jako parametr adresu webu, který chceme otevřít. $ tmux bind-key P command-prompt "new-window 'exec w3m %%'" Po stisknutí klávesové zkratky [Ctrl-b + P] se ve stavovém řádku objeví výzva, do které napíšete řetězec, který bude následně předán jako parametr spuštěnému programu w3m, který se bude nacházet v nově otevřeném okně. Stejně tak můžete volat jakoukoliv jinou terminálovou aplikaci, která bude spuštěna v novém okně nebo podokně. Pokud se často přihlašujete na vzdálený počítač můžete si takto nastavit i klávesové zkratky pro ssh a podobně. Další zajímavou vlastností může být specifikace konkrétního cíle se kterým chceme pracovat. K tomu použijeme parametr -t. Máme na výběr z target-client což specifikuje konkrétního klienta, target-sesion pro zadávání příkazu konkrétnímu sezení, target-window pro zadávání příkazu konkrétnímu oknu a target-pane pro konkrétní podokno.Jestliže není okno nebo konkrétní cíl specifikován bude vybrán aktuální cíl nebo aktuální okno. Seznam všech klientů dostanete příkazem:
$ tmux list-clientsseznam všech sezení příkazem:
$ tmux list-sessionsseznam všech oken pomocí:
$ tmux list-windowsa všech podoken příkazem:
$ tmux list-panes
$ tmux select-window -t:-2Posune se na okno o dvě pozice zpět v aktuálním sezení
$ tmux select-window -t 1:-2Posune na okno o dvě pozice zpět v sezení, které je označené indexem 1. Toto si nejlépe vyzkoušíte, když si spustíte dva terminály a v každém se přihlásíte k jinému sezení tmuxu. Stejným způsobem můžete přistupovat k libovolnému podoknu v daném sezení. Tedy příkazem:
$ tmux split-window -h -t 1:2rozdělíte v sezení s indexem 1 jeho druhé okno na dva podokna a příkazem:
$ tmux clock-mode -t 1:2.0zobrazíte v podokně s indexem 0 hodiny. Příkazy shellu musí být předány jako jeden řetězec:
$ tmux new-window ‘vi /etc/passwd’V dalším díle Vás čeká popis práce s okny, podokny, stavovým řádkem a něco málo o tom jak si s tmuxem ušetřit práci.