Si yo uso
tmux attach
Puedo adjuntarme a una sesión en ejecución, pero si no hay sesión en ejecución, solo aparece el error
no sessions
¿Cómo puedo iniciar automáticamente una nueva sesión si no hay ninguna en ejecución? algo como
tmux attach-or-create-new-session
Respuestas:
La respuesta es mucho más simple. Solo pon esto en tu
~/.tmux.conf
archivo:Si ejecuta
tmux attach
y hay una sesión, se adjuntará a esa sesión (ya sea que esté adjunta o no). Si aún no hay una sesión, creará una para usted.fuente
tmux
se invoca sin argumentos, creará una nueva sesión y luego creará una segunda sesión tan pronto como llegue a esta línea en su~/.tmux.conf
. Puede ver este problema ejecutandotmux ls
después de crear la primera sesión. En la práctica, después de poner esto en su archivo, ya no puede llamartmux
sin argumentosalias tmux="tmux attach"
para evitar este problematmux
.Si nombrar su sesión está bien, entonces es fácil hacerlo con el
new-session
comando:dónde
main
está el nombre de la sesión que se adjuntará o creará si es necesario.De
man tmux
:Tenga en cuenta también que la
-A
opción se presenta en la versión tmux1.8
del 26 de marzo de 2013 , para versiones anteriores, usetmux attach || tmux
.fuente
alias "tmux-attach-or-create-main-session=tmux new-session -A -s main"
. ¡Gracias por el consejo! Página del manual: openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/tmux.1tmux: unknown option -- A
Esto solo parece estar disponible en versiones recientes.[ -z "$TMUX" ] && exec tmux new -As .
Esto es lo que uso en mi.bashrc
.Esto iniciará una nueva sesión si adjuntar da un error:
Entonces un alias hará el trabajo:
fuente
tmux attach
paratmux a
Considere agregar lo siguiente a su
.bashrc
Puede ver mi uso de esto en mi archivo de recursos ZSH en mi repositorio de github
fuente
Para ampliar la respuesta de Wesley Baugh (que fue para mí dos sesiones de anidamiento cuando se usaba en .bashrc en los inicios de sesión) y agregar un poco de flexibilidad, ya que a menudo lo uso
sudo -s
en servidores (que cargaría mi .bashrc nuevamente y doble anidación), aquí está lo que tengo en mi .bashrc:Esto comprueba si hay una sesión tmux y se asegura de que no seas superusuario antes de crear una nueva sesión o adjuntarla a una existente llamada
main
.fuente
Drew Frank respondió esto aquí: https://superuser.com/questions/487363/tmux-equivalent-of-screen-r
Aquí está el script que ahora uso para esto (sin embargo, volví a la pantalla debido a otro problema con tmux)
/somewhere/on/your/path/ttmux
o como una función de shell:Las
-2
opciones hacen que tmux asuma un soporte de terminal de 256 colores, por lo que puede no ser apropiado para su situación.fuente
Si está utilizando esto dentro de un archivo .shrc o similar
exec
, le recomendaríafuente
Mejoré un poco la respuesta de @SuperMagic. Puse este bloque en la parte superior de mi
.zshrc
fuente