Presentació
Antics apunts sobre Tmux, del 2013, actualitzats. Escrits originàriament en Text2tags (sí, el primer llenguatge de marcat lleuger que vaig utilitzar, entre el 2011 i el 2013, va ser Text2tags). En origen, açò era poc més que un recordatori ràpid, una xulla sobre una aplicació que acabava de descobrir; he afegit alguns comentaris al recull de dreceres original i alguna captura per il·lustrar-ne el contingut, però continua essent el mateix, un breu recordatori.
Què és Tmux?
Si us dic que Tmux és un multiplexor de terminals, poden passar dues coses:
- que ja sabeu de què us estic parlant (i no necessiteu llegir aquest article perquè de segur que en sabeu molt més que jo), o
- que no només us sona a sànscrit medieval, sinó que el nom us espanta i esteu pensant en sortir cames ajudeu-me (amb la qual cosa tampoc no llegireu aquest article).
En lloc d’això, doncs, us diré que Tmux és un petita meravella que converteix un trist, rígid i fred terminal en una flexible explosió d’escriptoris i finestres amb què combinar desenes de terminals d’una manera pràctica i, al mateix temps, atractiva.
Ara bé, si sou d’aquells que tenen por a la pantalla negra, doncs… fareu bé en fugir, perquè Tmux no és un terminal, sinó una infinitat de terminals combinats.
Tmux us permet, entre altres coses:
- obrir un terminal i crear-hi tants com voldreu, un darrere de l’altre, i obrir diferents aplicacions de text a l’hora, i canviar d’un a un altre amb facilitat;
- dividir una finestra en diversos panells i veure, simultàniament, l’execució de diverses aplicacions (sempre en mode text, és clar);
- donar nom (nom de sessió) a un grup de terminals, desconnectar-vos-en, connectar-vos a un grup diferent i, finalment, tornar al primer grup, que haurà continuat amb l’execució dels programes que hi teníeu en dansa;
- si us connecteu en remot a una màquina, Tmux us permet d’obrir-hi una sessió amb diversos terminals i aplicacions i, encara que es talle la comunicació, en reconnectar-vos-hi, allà seguirà, esperant-vos, la sessió que teníeu en marxa i no haureu perdut la vostra feina;
- us permet connectar-vos a diverses màquines i posar «en paral·lel» els terminals oberts a cada una d’elles, de manera que les ordres que introduïu per a una, es repeteixen i s’executen en totes elles.
Figura 1: Un exemple de Tmux en funcionament (sobre Tilda) amb tres finestres (se’n veuen els noms en la línia d’estat, en vídeo invers) i cinc panells en la finestra activa on s’estan executant les aplicacions Toot, Ranger, Elinks, Htop i un rellotge.
En la Figura 1 hom pot observar els tres nivells d’organització de Tmux:
- la sessió, Xineitor, que apareix, entre claudàtors, a la banda esquerra de la barra d’estat;
- els noms de les tres finestres (Primera, Segona, Tercera, numerades a partir de 0) i la indicació, amb un asterisc, de la finestra activa (Segona*), i
- els cinc panells en que aquesta es troba dividida, separats per fines línies verdes.
Encara no us pica la curiositat? Bé, doncs, això vol dir que no esteu fets per a la claredat conceptual del terminal ni per a l’emoció de l’administració remota. No passa res, no a tots ens interessen les mateixes coses. Però, si us agrada el món de la pantalla negra i els missatges escrits d’aspecte esotèric i en voleu saber alguna cosa més… Seguiu llegint!1
Instal·lar Tmux
Tmux és un paquet molt popular i sol estar present en la major part dels repositoris, de manera que, per instal·lar-lo, només caldrà seguir el procediment habitual. En la família Debian, per exemple, serà suficient amb:
$ sudo apt-get update ; sudo apt-get install tmux
D’altra banda, les distros especialitzades en tasques de recuperació de sistemes, informàtica forense i similars, solen portar Tmux ja instal·lat.
Executar Tmux
Iniciar sessió
Obrim un emulador de terminal i, per iniciar Tmux, executem alguna de les ordres següents:
$ tmux # Executa Tmux $ tmux new # Executa una nova sessió de Tmux $ tmux new-session # Executa una nova sessió de Tmux
En general, i en funció de la configuració per omissió de la nostra distro particular, l’única diferència que apreciarem serà l’aparició d’una línia en vídeo invers a la base del terminal. Aquest banda presenta informacions com ara el número de la finestra (per omissió, comença en 0), el nom del programa en execució (si no s’hi està executant cap, hi figurarà bash, és a dir, l’intèrpret d’ordres —si no és que en teniu algun altre configurat), el nom de la màquina, l’hora, el dia.
Figura 2: Aspecte de Tmux només amb la configuració per omissió.
Iniciar sessió sota un nom concret
Si preveiem utilitzar simultàniament diverses sessions de Tmux, cadascuna dedicada a una tasca concreta, aleshores ens resultarà còmode i pràctic identificar-les amb noms clars. Ho podem aconseguir amb qualsevol de les ordres següents:
$ tmux new-session -s Nom-de-la-sessió $ tmux new -s Nom-de-la-sessió
Un cop hem posat en marxa, dins de la nostra sessió, tantes finestres, panells i aplicacions com necessitem, podem sortir-ne sense tancar-la. La manera més ràpida d’aconseguir això és amb la drecera C-b d
(és a dir, Ctrl+b d
)2. Ens haurem desconnectat de la sessió, però aquesta continuarà funcionant en segon pla fins que decidim de relligar-nos-hi.
Relligar una sessió preexistent (sense deslligar-la de cap altra execució possible)
Si ens hem desconnectat d’una sessió i volem tornar a treballar-hi, el procediment, sempre des de la línia d’ordres, és senzill. Si només tenim una sessió en funcionament, no caldrà identificar-la i qualsevol de les ordres següents ens servirà:
$ tmux attach-session $ tmux attach $ tmux a
En canvi, si tenim dues o més sessions de Tmux en marxa, funcionant en segon pla, haurem d’indicar el nom de la sessió que desitgem relligar. Ho podem fer amb qualsevol de les ordres següents:
$ tmux attach-tession -t Nom-de-la-sessió $ tmux attach -t Nom-de-la-sessió $ tmux a -t Nom-de-la-sessió
Si volem recordar els noms de les sessions actives, només haurem d’emprar l’ordre següent:
$ tmux list-sessions
Dreceres de teclat en Tmux
Funcionament de les dreceres en Tmux
Un cop Tmux està en funcionament, podem executar-hi desenes d’operacions a través de dreceres de teclat. Totes les dreceres en Tmux comencen amb la combinació C-b
(és a dir, Ctrl+b
: prémer Ctrl
i b
simultàniament i soltar)3 i, a continuació, prémer una altra tecla per a completar la drecera.
Les dreceres estan associades a comandaments Tmux, que podríem introduir a la manera Vim (és a dir, teclejaríem al drecera C-b :
i s’obriria una línia on introduir l’ordre), comandaments com:
- list-commands
- previous-window
- rename-session
Les ordres Tmux permeten extraure el 100% del rendiment de l’aplicació. Per qui en tinga curiositat, amb man tmux
trobarà tota la informació.
Tot seguit veurem algunes de les dreceres de teclat més útils i freqüents.
Finestres
Drecera | Ordre |
---|---|
C-b c | Crea una finestra nova. |
C-b & | Mata la finestra on ens trobem i totes els panells que conté. |
C-b , | Canvia el nom de la finestra actual. |
C-b n | Vés a la finestra següent (next). |
C-b p | Vés a la finestra anterior (previous). |
C-b núm | Vés a la finestra seleccionada (0 a 9), no pas al panell. |
C-b w | Mostra la llista de les finestres actuals del tmux. |
C-b x | Tanca la finestra actual. |
Panells
Drecera | Ordre |
---|---|
C-b ! | Tanca tots els panells de la finestra actual, tret d’aquest. |
C-b “ | Divideix horitzontalmente la finestra actual en dos panells. |
C-b % | Divideix la finestra actual verticalment en dos panells. |
C-b avall | Vés al panell inferior. |
C-b esquerra | Vés al panell de l’esquerra. |
C-b dreta | Vés al panell de la dreta. |
C-b amunt | Vés al panell de sobre. |
C-b o | Vés al següent panell (other). |
C-b q | Mostra breument els números dels panells. |
C-b x | Mata el panell actual. |
C-b-fletxa | Redimensiona el panell en el sentit de la fletxa. |
Sessions
Drecera | Ordre |
---|---|
C-b s | Tria sessió: ens en mostra la llista, en triem una i premem Entrar . |
C-b d | Deslliga la sessió actual: surt de Tmux deixant-lo en funcionament. |
Utilitats
Drecera | Ordre |
---|---|
C-b [ | Entra en mode scroll amb les tecles del cursor. En surt prement «q». |
C-b t | Mostra en el panell actiu un rellotge digital. |
C-b ? | llista les dreceres de teclat. |
Iniciar sessió amb algunes finestres preconfigurades
Una opció certament avançada és iniciar sessió en Tmux amb algunes finestres i panells ja preconfigurats (i estalviar el temps que trigaríem a definir-los amb les dreceres de teclat), i fins i tot llançar-hi ja algunes aplicacions. Hi ha diverses maneres de fer-ho. Sense entrar-hi en detalls, perquè és un argument d’un nivell més avançat, amb l’ordre següent crearíem una sessió anomenada «DuesFinestres» que constaria de tres finestres, l’última de les quals estaria dividida en dos panells:
$ tmux new -s TresFinestres \; new-window \; new-window \; split-window -v \; next-window ## Crea i obre una sessió (amb nom); crea una segona i una tercera finestres; ## divideix la tercera finestra verticalment (amunt, a sota; si canviem -v ## per -h, la divisió és hortizontal, dreta-esquerra); passa a la següent finestra ## (que és la primera).
El resultat es pot observar en la següent imatge:
Figura 3: Sessió de Tmux amb tres finestres, una de les quals dividida en dos panells, amb una sola ordre.
Aquestes ordres, tan complicades, es poden desar en un guió i executar-se sempre igual. Tanmateix, la sintaxi de Tmux és complexa; per sort, hi ha aplicacions que simplifiquen aquesta tasca, com Tmuxp i Tmuxinator : ja en parlarem més endavant.
Conclusions
Si teniu costum de treballar sovint amb aplicacions de terminal, sens dubte apreciareu aquesta aplicació. Si us quedeu sense sistema gràfic en algun moment, us sentireu afortunats de conèixer-la. Si feu administració remota, no en podreu prescindir. En canvi, si el terminal es una cosa que no empreu mai o gairebé mai, Tmux no us aportarà res.
Quins avantatges té Tmux respecte a GNUScreen, una aplicació similar però amb més anys de rodatge? La primera diferència que em va cridar l’atenció va ser l’estètica (els panells, dibuixats per Tmux amb fines línies, em van semblar molt més agradables a la vista). Per la resta, no vaig arribar mai a conèixer GNUScreen tan bé com per a fer-me’n una opinió fonamentada: supose que, si teniu Screen ben dominat, potser no trobareu cap motiu vàlid per a fer l’esforç de canviar de a Tmux. Però de segur que us agradarà fer-hi una ullada ràpida i valorar-ne les possibilitats.
Notes a peu de pàgina:
Si esteu començant a pensar que Tmux s’assembla molt a GNUScreen, doncs, sí, teniu raó: és el mateix tipus de programa.
Una mica més endavant ho tornem a explicar, però les dreceres, en Tmux, consten de dues parts: el prefix (Ctrl+b
, o, si esteu familiaritzats amb la nomenclatura Emacs, C-b
) més la tecla associada; en aquesta cas, la lletra d correspon a detach, desenganxar-se o desconnectar-se.
Aquesta combinació se sol anomenar «prefix» i es podria configurar i canviar en cas necessari.