¿Qué es Tmux?
Su nombre es el diminutivo de terminal multiplexer (multiplicador de terminal), y nos permite habilitar múltiples sesiones, ventanas y paneles para ser controladas mediante el mismo terminal. Es compatible con plataformas Linux, Mac OS X, FreeBSD, OpenBSD, NetBSD y Solaris.¿Cómo lo instalo?
En Mac OS X el proceso de instalación recomendado es mediante el uso de Homebrew, con solo una línea ya estaremos listos para usar la herramienta:En otros sistemas que soportan el comando apt-get, la instalación es igual de sencilla:
¿Cómo lo uso?
Para comenzar creemos una sesión nueva:Esto iniciará una nueva sesión del terminal tmux con el nombre primera_sesion. Notemos que en la barra inferior del terminal podemos apreciar además del nombre de la sesión, lo siguiente: 0:-\, esto se traduce en que tenemos una ventana en la sesión (ventana 0), como estamos en el directorio raíz del usuario la ruta es únicamente el guión (-), y el asterisco () nos indica que es la ventana activa
Debemos resaltar que el funcionamiento de tmux está enfocado a atajos de teclado, para ejecutar una funcionalidad debemos presionar Ctrl-b (accionador por defecto), luego los soltamos y presionamos la tecla de la acción que deseamos.
Por ahora creemos un nuevo panel en nuestra ventana, esto dividirá nuestra ventana horizontal o verticalmente para crear el otro panel, para hacerlo verticalmente presionemos
Ctrl-b %
y horizontalmente Ctrl-b "
. Hagamos ambos para ver que pasa:
Notemos que creamos 2 paneles adicionales, uno al dividir el original verticalmente en 2 y el otro al dividir el nuevo vertical derecho en 2 horizontales. Para poder ciclar entre los diferentes paneles podemos presionar
Ctrl-b o
o si queremos ir a alguno en particular podemos presionar Ctrl-b q
lo cual nos dirá los números de cada panel y si rapidamente presionamos el número del que deseamos podremos ir a él.
Si estas trabajando en un ambiente que te permite hacer uso de un ratón, más adelante explicaremos como configurar tmux para que lo soporte y hacer que el cambio de paneles sea más sencillo.Digamos que no necesitamos estos 3 paneles ahora, así que desechemos este último presionando
Ctrl-b x
.
Ahora creemos una nueva ventana presionando
Ctrl-b c
:
Notemos que hemos creado una nueva ventana de terminal, podemos apreciar en la barra inferior que ahora tenemos la ventana 0 y la 1, el asterisco nos indica la ventana en la cual nos encontramos actualmente.
Para ciclar entre las diferentes ventanas podemos presionar
Ctrl-b n
para ir a la próxima ventana, Ctrl-b p
para ir a la anterior o simplemente especificar la ventana que
queremos, por ejemplo si quisiéramos ir a la ventana 0 presionaríamos Ctrl-b 0
.
Estado de sesión
Una de las grandes ventajas de tmux es su habilidad de desatarnos de la sesión, todo lo que la sesión contiene se mantendrá intacto. Hagamos una prueba de esto.Ahora presionemos
Ctrl-b d
para desatarnos de la sesión.
Notaremos que hemos vuelto a nuestro terminal común con el mensaje [detached]; sin embargo todo lo que dejamos corriendo en la sesión sigue ejecutandose, nuestra conexión SSH no está cerrada, volvamos a atar la sesión para comproblarlo:
$ tmux list-sessions
primera_sesion: 2 windows (created Sat Jul 27 18:04:37 2013) [104x31]
$ tmux attach-session -t primera_sesion
Debemos tener en cuenta que si el computador en el que estamos trabajando es apagado las sesiones se perderán.
Programación en pareja
Otro de los usos más interesantes que se le da a Tmux es la programación remota en pareja.Para esto se recomienda construir una sesión de usuario aparte de la que usamos convencionalmente en el computador ya que no queremos que alguien acceda a nuestra información. En este caso lo haremos con nuestro usuario normal para la demostración.
Debemos crear la sesión especificando el socket que usará, lo cual permitirá compartirla entre varios usuarios, para dar acceso a otros usuarios al socket debemos otorgarle los permisos necesarios:
Ahora en nuestro otro computador nos conectamos por SSH al equipo anfitrión y nos atamos a la sesión (recuerda que debes tener habilitado este tipo de acceso remoto en la configuración de tu computador anfitrión).
Ahora ambos equipos se encuentran conectados a la misma sesión de Tmux y lo que uno escriba se verá reflejado en el otro:
Si quieres adentrarte más en la programación en pareja por terminal, te recomendamos que le eches un vistazo a Tmate y Wemux basadas en Tmux, los cuales ofrecen varias ventajas relacionadas a este fin particular.
Hoja de atajos
Especifiquemos algunos de los atajos más comunes.Acción | Atajo |
---|---|
Crear nueva ventana | Ctrl-b c |
Eliminar ventana actual | Ctrl-b & |
Mover a ventana siguiente | Ctrl-b n |
Mover a ventana anterior | Ctrl-b p |
Mover a ventana especifica | Ctrl-b <num ventana> |
Mover a ultima ventana seleccionada | Ctrl-b l |
Mostar ventanas (al seleccionar una se irá a ella) | Ctrl-b w |
Dividir panel verticalmente | Ctrl-b % |
Dividir panel horizontalmente | Ctrl-b " |
Ciclar entre paneles | Ctrl-b o |
Mostar paneles (al seleccionar uno rapidamente, se irá a él) | Ctrl-b q |
Mover panel actual a la derecha | Ctrl-b } |
Mover panel actual a la izquierda | Ctrl-b { |
Eliminar panel actual | Ctrl-b x |
Eliminar todos los paneles excepto el actual | Ctrl-b ! |
Mostrar la hora | Ctrl-b t |
Desatar de la sesión | Ctrl-b d |
Mostar sesiones (al seleccionar una se irá a ella) | Ctrl-b s |
Renombrar sesión | Ctrl-b $ |
Escribir en consola de comandos (comandos avanzados) | Ctrl-b : |
Mostar atajos | Ctrl-b ? |