Tabla de contenido
Seguramente habrás oído hablar de tmux. Hoy hablaremos de cómo usar tmux, es decir de: qué es, para qué sirve y como utilizarlo.
¿Qué es TMUX?
El comando tmux es un multiplexor de terminales, como también lo es el comando screen. En este Articulo vamos a comparar los dos ¿Es tmux realmente mejor, o es solo es un tema de preferencias?
Pero ¿Qué es un multiplexor de terminales?
Bien, un multiplexor de terminales es un sistema que nos permite tener pseudo-terminales «dentro de una terminal». Es decir, cuando ejecutamos el comando screen o tmux por ejemplo podemos salir de la sesión de screen pero mas tarde podemos volver a entrar y recuperar la sesión (y el programa a continuado su ejecución si se estaba ejecutando). Esto es útil para evitar que se nos corte la ejecución de un comando si se nos corta la conexión por ejemplo. Con tmux, también podemos dividir la pantalla en varias terminales, agrandar una volver a la división de pantallas etc.
Instalación de tmux
La instalación de tmux es realmente simple. en ubuntu por ejemplo:
sudo apt-get install tmux
En sistemas basados en redhat:
yum install tmux
Y en sistemas basados en Arch Linux:
sudo pacman -Sy tmux
Iniciar una sesión tmux
Para iniciar una nueva sesión solo tienes que escribir en la terminal tmux y pulsar enter.
Cuando iniciamos una nueva sesión de tmux, veremos en la barra una barra de estado que muestra el nombre del host la fecha y la hora. En el lado izquierdo se muestra mas información relacionada con la sesión:
- [0]: Indica el nombre de la sesión, por defecto se representa por números comenzando por cero.
- 0: bash *: El 0 indica el numero de ventana, en este caso es la primera ventana de la sesión. Se está ejecutando bash en esta ventana, si ejecuta otra aplicación el nombre de esta sustituirá a bash. El asterisco representa que es la ventana que tiene el foco. Cada vez que abras una nueva sesión, ventana o programa estos datos se modifican.
Una de las diferencias que tiene el comando tmux con screen es precisamente esta barra de estado, con screen no dispones de ella.
Lanzar una sesión con nombre personalizado
Para modificar el nombre de la sesión debemos ejecutar el comando tmux de la siguiente forma:
tmux nuevo -s NOMBRE
Es decir, si queremos nombrar a la sesión my-session1 sería:
tmux nuevo -s my-session1
En la barra de estado nos mostrará: [my-session1] 0:bash*
Cómo comenzar con tmux
La aplicación tmux tiene muchísimas opciones, para acceder a ellas tienes que pulsar las teclas CTRL+b y después de pulsar estas dos teclas juntas pulsar solo la tecla que se indique en el comando.
Listar sesiones activas de tmux
Para listar sesiones activas con tmux se hace exactamente igual que con screen, usando el subcomando tmux ls como podemos ver a continuación:
ger@host:~$ tmux ls 1: 1 windows (created Thu Oct 27 07:50:46 2022) ger@host:~$
El primer numero que aparece es el nombre de la sesión, en caso de hacerla puesto de nombre «mysess» se vería así:
ger@host:~$ tmux ls mysess: 1 windows (created Thu Oct 27 07:50:46 2022) ger@host:~$
Recuperar sesiones activas
Tras listar las sesiones activas podemos recuperarlas con tmux attach -t SESSION_NAME donde SESSION_NAME es el nombre de sesión como se puede ver a continuación:
ger@host:~$ tmux ls mysess: 1 windows (created Thu Oct 27 07:20:46 2022) ger@host:~$ tmux attach -t mysess
Salir de la sesión actual dejándola en background
Si estamos dentro de una sesión y queremos dejarla en segundo plano, podemos ejecutar CTRL+b y después d para dejar la sesión corriendo en segundo plano:
Esto nos puede ser útil para dejar tareas de largo tiempo de ejecución en segundo plano y volver a recuperar la sesión mas adelante, como haríamos con screen.
Tener scroll en tmux
Si te has puesto a «jugar» con tmux puedes pensar que no tiene scroll, si necesitas hacer scroll, debes pulsar CTRL+b y después RE-PAG con esto ya podrás hacer scroll sin problema o desplazarte con las flecas direccionales de arriba y abajo.
Listado de comandos para tmux
Un resumen rápido de lo que se puede hacer a groso modo sería lo siguiente:
Comandos de sesión
Acción | Comando | Descripción |
---|---|---|
Crear nueva sesión | tmux new -s SESSION_NAME | Crea una nueva sesión de tmux |
Entrar en sesión activa de tmux | tmux attach -t SESSION_NAME | Recupera una sesión activa |
Listar sesiones activas de tmux | tmux ls | Lista sesiones de tmux |
Dejar sesión en background | CTRL+b y después d | Deja corriendo en segundo plano una sesión de tmux |
Comandos de ventana
Acción | Comando (a ejecutar despues de CTRL+b) | Descripción |
---|---|---|
Crear nueva ventana | c | Crea una nueva ventana en la sesión activa |
Cambiar a siguiente ventana | n | Cambia a la siguiente ventana dentro de la sesión activa |
Cambiar a ventana anterior | p | Cambia a la ventana anterior de la sesión activa |
Cerrar ventana | x | Cerrar ventana activa de la sesión actual (pide confirmación) |
Comandos de panel
Acción | Comando (a ejecutar despues de CTRL+b) | Descripción |
---|---|---|
Dividir la ventana actual horizontalmente | « | Dividir horizontalmente la ventana activa en 2 paneles (2 terminales) |
Dividir la ventana actual verticalmente | % | Dividir verticalmente ventana activa en 2 paneles (2 terminales) |
Cambiar de panel activo | Flecha direccional | Cambiar de panel activo usando las flechas direccionales para elegir la dirección del panel al que cambiar |
Mostrar brevemente números de panel | q | Cada panel tiene un numero asignado, este comando los muestra por un corto tiempo |
Desplazarse por los paneles en orden hasta recorrer todos. | o | |
Intercambia la posición del panel actual con el siguiente. | } | Intercambia la posición de los paneles con el siguiente incluso si ambos tienen algo en ejecución. |
Intercambia la posición del panel actual con el anterior. | { | Intercambia la posición de los paneles con el anterior incluso si ambos tienen algo en ejecución. |
Cierra el panel actual. | x | Cierra el panel actual (pide confirmación) |
Maximiza o vuelve a tamaño normal el panel actual | z | Maximiza o vuelve a tamaño normal el panel actual, es decir, si está la ventana dividida en paneles amplia el panel actual o vuelve a mostrar todos los paneles si habías ampliado un panel previamente. |