Tmux: otro nivel en la interacción con tus terminales

Aprende a mejorar tu experiencia de usuario en la línea de comandos con Tmux. Descubre cómo dividir y organizar tu terminal en diferentes paneles y ventanas virtuales.

Todos hemos quedado fascinados en algún momento con aquellos hackers que nos presenta Hollywood que, con pulsaciones rápidas y repetitivas sobre el teclado, en 7 segundos son capaces de burlar cortafuegos y desactivar defensas o lanzar ataques nucleares 😂.

Ciertamente, esto es solo ficción. El trabajo de un hacker no es tan dinámico y se requiere mucho tiempo y estudio del objetivo para lograr algo significativo.

Pero de esta imagen presentada por la industria cinematográfica sí podemos sacar algo que nos puede ayudar mucho en nuestro trabajo diario, la creación de un espacio de trabajo con pantalla divida en varios terminales.

Resulta que existe una herramienta llamada tmux que te permite mejorar tu experiencia de usuario en la interacción con la línea de comando y este artículo estará dedicado a entender como podemos interactuar con ella para obtener los mejores resultados. Comencemos.

¿Qué es Tmux?

Se trata de una aplicación de línea de comandos que permite dividir y organizar tu terminal en diferentes paneles y ventanas virtuales.

Esto es útil para realizar varias tareas al mismo tiempo sin tener que abrir múltiples terminales o para mantener sesiones de terminal activas mientras te desconectas de una computadora.

Además, ofrece una serie de opciones de personalización y configuración para adaptarse a tus necesidades.

Características de Tmux

  • Dividir la terminal en paneles: se pueden crear varios paneles en una misma ventana y ejecutar diferentes aplicaciones en cada uno de ellos.
  • Sesiones de terminal: se pueden crear sesiones de terminal y conectarse a ellas desde diferentes terminales. Esto es útil para mantener una sesión de terminal activa mientras se está conectado a un servidor remoto.
  • Historial de sesión: guarda el historial de la sesión, lo que permite volver a ver comandos ejecutados previamente.
  • Detach y attach: se puede desconectar de una sesión y volver a conectarse más tarde, manteniendo todas las aplicaciones y el estado de la sesión en el mismo lugar.

De forma general es muy útil para administradores de sistemas y desarrolladores que trabajan con servidores remotos y necesitan ejecutar varias tareas de forma simultánea.

También es popular entre los usuarios avanzados de terminal que desean tener una mayor flexibilidad y control sobre sus sesiones de terminal.

¿Personalmente, para qué utilizo Tmux?

Yo dividiría el uso de esta herramienta en 2 propósitos diferentes. El primero es una cuestión estética y de comodidad y es a la que hacíamos referencia en la introducción. Poder dividir una terminal en varios espacios de trabajo con una terminal en cada uno que puede ejecutar comandos diferentes.

El otro de los usos que le doy, y para mí el más importante, es la protección de sesiones remotas.

Resulta que en ocasiones necesito entrar a un servidor por el protocolo SSH, para ejecutar un proceso que demora mucho tiempo, y necesito salir de la sesión sin que el servidor cierre el proceso que se debe quedar ejecutando.

Para esto, la herramienta te deja crear terminales virtuales que protegen estos procesos del cierre de sesión. De este modo puedo desconectarme tranquilamente del servidor y se mantendrá ejecutándose el proceso todo el tiempo que sea necesario sin interrupción.

Al volver a entrar al servidor, solamente tengo que volver a entrar a la terminal virtual creada previamente y puedo ver los resultados del proceso que dejé ejecutando.

Veamos ahora como podemos instalar y trabajar con este programa.

Instalación

Te recomiendo que primeo verifiques si ya se encuentra instalado, ya que en algunos sistemas ya viene por defecto. Puedes usar el siguiente comando para realizar esta comprobación:

tmux -V

Si ya se encuentra en tu sistema, el comando te devolverá la versión. En caso contrario puedes instalar la herramienta con este comando:

sudo apt install tmux

Funcionamiento

Una vez instalado tmux, puede iniciarlo ejecutando el comando tmux.

Esto te llevará a una nueva sesión de tmux con una sola ventana. Puedes crear más ventanas en tu sesión usando el comando Ctrl+b C.

Puedes alternar entre las ventanas de tu sesión usando el comando Ctrl+b N, donde N es el número de la ventana a la que quieres acceder.

Pantalla dividida con Tmux

En la imagen puedes ver las dos ventanas que creamos y el asterisco indica que está activa la ventana 0.

Podemos renombrar estas ventanas con el comando Ctrl+b ,

2 Tmux: otro nivel en la interacción con tus terminales

De este modo podemos crear todas las terminales virtuales que deseemos y ejecutar en ellas procesos distintos.

Dividir terminal

Veamos ahora como dividir la terminal para no tener que estar cambiando si ejecutamos varios procesos a la vez.

Para dividir la pantalla horizontalmente necesitamos utilizar el comando Ctrl+b “

3 Tmux: otro nivel en la interacción con tus terminales

Ahora dividiremos el panel de abajo verticalmente. Para esto necesitamos primeramente desplazarnos hacia el panel objetivo con el comando: Ctrl+b ↓. Este será un patrón que estaremos aplicando constantemente, el uso de Ctrl+b para que la herramienta se ponga a la escucha y luego la flecha que queramos para desplazarnos por los paneles.

Una vez en el panel inferior ejecutamos Ctrl+b % para dividirlo verticalmente.

4 Tmux: otro nivel en la interacción con tus terminales

De este modo podemos crear todos los paneles que necesitemos para trabajar más cómodos.

5 Tmux: otro nivel en la interacción con tus terminales

Proteger procesos con tmux

Hasta el momento hemos visto como crear ventanas y dividirlas en paneles para facilitar el trabajo con nuestros terminales. Nos queda pendiente el cómo proteger procesos que se inician de forma remota para que cuando se cierre la sesión no se detengan.

Por defecto, una vez que iniciamos la ejecución de algún proceso en una sesión de tmux, este queda protegido y ya podemos cerrar la sesión tranquilamente.

Si queremos dejarlo en segundo plano y seguir trabajando podemos utilizar el comando Ctrl+b d.

Podemos listar en cualquier comento las sesiones abiertas con el comando tmux ls y retomar cualquiera de las sesiones utilizando tmux attach -t nombre_sesion.

Resumen de comandos

tmux new -s nombre_sesion: Iniciar una nueva sesión de tmux con el nombre «nombre_sesion»

tmux attach: Retomar la última sesión de tmux en la que hayas trabajado

tmux attach -t nombre_sesion: Retomar la sesión de tmux con el nombre «nombre_sesion»

Ctrl+b c: Crear una nueva ventana en tmux

Ctrl+b n: Ir a la siguiente ventana en tmux

Ctrl+b p: Ir a la ventana anterior en tmux

Ctrl+b %: Dividir la ventana de tmux verticalmente

Ctrl+b «: Dividir la ventana de tmux horizontalmente

Ctrl+b o: Alternar entre terminales virtuales en tmux

Ctrl+b x: Cerrar la terminal virtual actual en tmux

Ctrl+b d: Detener la sesión de tmux actual

Ctrl+b ?: Mostrar la lista de comandos de tmux

Puedes ver las combinaciones de teclado para cada una de sus funcionalidades aquí.

Herramientas similares

screen: Es una herramienta de terminal muy similar a tmux que te permite trabajar con varias terminales virtuales en una sola ventana.

byobu: Es una interfaz de usuario para screen y tmux que proporciona una serie de características adicionales, como un menú de configuración y una pantalla de inicio.

tmuxinator: Es una herramienta que te permite configurar y administrar fácilmente sesiones de tmux.

Para Windows, tenemos las siguientes alternativas:

ConEmu: Es una herramienta de terminal gratuita y de código abierto.

Windows Terminal: Es una herramienta de terminal de Microsoft.

Hyper: Es una herramienta de terminal basada en Node.js.

Conclusiones

  • Tmux es un multiplexor de terminal que te permite trabajar con múltiples terminales virtuales en una sola ventana.
  • Una de sus principales ventajas es que te permite mantener varias sesiones de terminal en segundo plano, incluso si cierras la ventana de terminal o te desconectas del servidor. Esto puede ser especialmente útil si estás trabajando en una tarea de larga duración y quieres poder continuar trabajando en ella más tarde.
  • También ofrece una serie de características que pueden ayudarte a trabajar de manera más eficiente, como la posibilidad de dividir la ventana de terminal en varios paneles, cambiar entre terminales virtuales y navegar entre ventanas.
  • Se puede utilizar para una variedad de tareas, como ejecutar y gestionar múltiples sesiones de terminal, ejecutar procesos de larga duración y trabajar con múltiples servidores.

Para sacarle el mayor provecho a esta herramienta, es importante familiarizarse con sus comandos y características básicas. Por esto te invito a que revises su web oficial para que revises a profundidad todas las opciones que brinda.

Web oficial: https://github.com/tmux/tmux/wiki

Si te interesa el contenido de este artículo quiero invitarte a que le des una ojeada a nuestra selección de herramientas para gestionar entornos virtuales en Python.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.