mac - tmux para ubuntu
Crear una nueva sesión de tmux desde dentro de una sesión de tmux (6)
Cómo crear la secuencia de comandos
Este script verificará si existe una sesión. Si la sesión no existe, cree una sesión nueva y conéctela. Si la sesión existe, no pasa nada y nos apegamos a esa sesión. Siéntase libre de reemplazar `~ / desarrollo ''con el nombre del proyecto.
$ touch ~/development && chmod +x ~/development
# ~/development
tmux has-session -t development
if [ $? != 0 ]
then
tmux new-session -s development
fi
tmux attach -t development
Nueva sesión desde la terminal
Vamos a crear dos sesiones separadas, enumerarlas, adjuntarlas a una y luego desde el ciclo tmux a través de 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.
$ tmux new -s development -d
$ tmux new -s foo -d
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
$ tmux attach -t
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
Nueva sesión desde dentro de tmux
Ahora estamos dentro o mejor conocidos como adjuntos a nuestra sesión objetivo. Si intentamos crear una nueva sesión mientras estamos conectados, se producirá un error de anidamiento.
$ tmux new -s bar
> sessions should be nested with care, unset $TMUX to force
Para resolver esto, creamos una nueva sesión separada. p.ej,
$ tmux new -s bar -d
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
> bar: 1 windows (created Wed Jan 13 17:19:35 2016) [204x54]
Sesiones de ciclo (interruptor)
-
Prefix
(
sesión previa -
Prefix
)
próxima sesión
nota: Prefix
es Ctrl-b
por defecto. Puede vincular el Prefix
a Ctrl-a
y en Mac OSX puede cambiar el Bloqueo de mayúsculas a las system preferences > keyboard > modifier keys
ctrl system preferences > keyboard > modifier keys
Adjuntar a una sesión usando el modo de comando mientras dentro de tmux
Intentar adjuntar a una sesión sin separarlo dará como resultado un error.
$ tmux attach -t development
> sessions should be nested with care, unset $TMUX to force
En su lugar, use Prefix
modo de comando :
luego escriba attach -t session_name
y attach -t session_name
enter.
Estoy escribiendo un script de shell que crea / adjunta o cambia a una sesión dada, dependiendo de si uno está dentro de tmux y si la sesión existe.
Tengo todo funcionando bien excepto por el caso que requiere la creación de una nueva sesión de tmux desde una sesión de tmux.
Cuando mi script ejecuta tmux new-session -s name
, obtengo el siguiente resultado:
las sesiones se deben anidar con cuidado, se ha eliminado $ TMUX para forzar
En realidad, no quiero anidar sesiones, mi objetivo es crear otra sesión separada y pasar a ella desde una sesión de tmux .
es posible?
La manera más rápida (suponiendo que use ctrl-b
como su prefijo de comando) es:
ctrl-b :new
Para crear una nueva sesión, entonces
ctrl-b s
para seleccionar interactivamente y adjuntar a la sesión.
Puedes intentar unset TMUX
primero, esto funciona para mí.
Todos los comandos que puede tmux new -s sessionName
dentro de su terminal, como tmux new -s sessionName
se pueden iniciar desde dentro de tmux
presionando la tecla de activación (p. Ej .: ctrl-b
) y luego :
luego, el comando sin la parte de inicio de tmux
.
Como resultado, ctrl-b :
seguido de new -s sessionName
hará exactamente lo que quiera y le dará un nombre a su sesión. También cambia automáticamente a la nueva sesión.
Usar esto funciona para mí:
TMUX= tmux new-session -d -s name
tmux switch-client -t name
El TMUX=
en la primera línea es necesario para que tmux no arroje las sessions should be nested with care, unset $TMUX to force
mensaje.
siguiendo los consejos del usuario2354696 utilizo los siguientes enlaces de teclas para crear una nueva sesión o "clonar" una sesión existente
bind-key N run-shell ''TMUX= tmux new-session -d /; switch-client -n'' bind-key C run-shell ''TMUX= tmux new-session -t $(tmux display-message -p #S) -s $(tmux display-message -p #S-clone) -d /; switch-client -n /; display-message "session #S cloned"''