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.confarchivo:Si ejecuta
tmux attachy 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
tmuxse 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 lsdespués de crear la primera sesión. En la práctica, después de poner esto en su archivo, ya no puede llamartmuxsin argumentosalias tmux="tmux attach"para evitar este problematmux.Si nombrar su sesión está bien, entonces es fácil hacerlo con el
new-sessioncomando:dónde
mainestá el nombre de la sesión que se adjuntará o creará si es necesario.De
man tmux:Tenga en cuenta también que la
-Aopción se presenta en la versión tmux1.8del 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 -- AEsto 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 attachparatmux aConsidere agregar lo siguiente a su
.bashrcPuede 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 -sen 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/ttmuxo como una función de shell:Las
-2opciones 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
.zshrcfuente