Estoy escribiendo un script de shell que crea / adjunta o cambia a una sesión determinada, dependiendo de si hay uno dentro de tmux y la sesión existe.
Tengo todo funcionando muy bien, excepto por el caso que requiere la creación de una nueva sesión tmux desde dentro de una sesión tmux.
Cuando se ejecuta mi script tmux new-session -s name
, obtengo el siguiente resultado:
las sesiones deben anidarse con cuidado, desarmar $ TMUX para forzar
En realidad, no quiero anidar sesiones, mi objetivo es crear otra sesión separada y cambiar a ella desde una sesión tmux .
es posible?
Respuestas:
La forma más rápida (suponiendo que la use
ctrl-b
como prefijo de comando) es:Para crear una nueva sesión,
para seleccionar interactivamente y adjuntar a la sesión.
fuente
ctrl-b $
Ctrl-b :new -s <name>
darle un nombre a la nueva sesión.Cómo crear el guión
Este script comprobará si existe una sesión. Si la sesión no existe, cree una nueva sesión y adjúntela. Si la sesión existe no pasa nada y nos adjuntamos a esa sesión. Siéntase libre de reemplazar `~ / desarrollo 'con el nombre del proyecto.
$ touch ~/development && chmod +x ~/development
Nueva sesión desde terminal
Vamos a crear dos sesiones separadas, enumerarlas, adjuntarlas a una y luego, desde dentro de tmux, recorrer las sesiones.
tmux new -s name -d
funciona desde dentro de tmux porque estamos creando una nueva sesión separada. De lo contrario, obtendrá un error de anidamiento.Nueva sesión desde dentro de tmux
Ahora estamos dentro o más conocidos como adjuntos a nuestra sesión de destino. Si intentamos crear una nueva sesión mientras estamos adjuntos, se producirá un error de anidamiento.
Para solucionar esto creamos una nueva sesión separada. p.ej,
Sesiones de ciclo (cambio)
Prefix
(
sesión anteriorPrefix
)
próxima sesiónnota:
Prefix
esCtrl-b
por defecto. Puede unirsePrefix
aCtrl-a
, y en Mac OS X puede cambiar el bloqueo de mayúsculas a ctrlsystem preferences > keyboard > modifier keys
Adjuntar a una sesión usando el modo de comando mientras está dentro de tmux
Si intenta conectarse a una sesión sin desconectarse, se producirá un error.
En su lugar, use el modo de comando,
Prefix
:
luego escribaattach -t session_name
y presione enter.fuente
Usar esto funciona para mí:
Se
TMUX=
requiere en la primera línea para que tmux no arroje unsessions should be nested with care, unset $TMUX to force
mensaje.fuente
TMUX=`tmux new-session -d -s name`
Todos los comandos que puede ejecutar dentro de su terminal, como
tmux new -s sessionName
se pueden ejecutar desde dentrotmux
presionando la tecla de activación (por ejemplo:)ctrl-b
y:
luego el comando sin latmux
parte inicial .Como resultado,
ctrl-b :
seguido denew -s sessionName
hará exactamente lo que desea y le dará un nombre a su sesión. También cambia automáticamente a la nueva sesión.fuente
Puedes probar
unset TMUX
primero, esto funciona para mí.fuente
según el consejo de user2354696, utilizo las siguientes combinaciones de teclas para crear una nueva sesión o "clonar" una sesión existente
fuente