Estoy tratando de descubrir cómo adjuntarme a una tmux sessionsesión si existe una tmux con nombre, si no, quiero crear una nueva con el nombre dado.
Actualmente, conozco algunos tmuxcomandos que pueden lograr en parte lo que estoy buscando, pero no está claro cómo combinarlos para obtener lo que estoy buscando:
tmux attachse adjunta a una sesión existente automáticamente, pero se elimina el error si no existetmux newcrea una nueva sesión, pero siempre lo hace, así que no puedo dejarla en mi.tmux.conftmux has-sessionprueba si existe una sesión, pero no sé cómo unirla con los otros comandos
Por lo tanto, me gustaría crear un script tmux, para que esto suceda automáticamente, en lugar de tener que crearlo manualmente cada vez que necesite iniciar sesión en una sesión.
¿Cómo puedo escribir un script automático para crear una nueva sesión de tmux (si no existe un nombre de sesión dado) o adjuntarlo a un nombre de sesión (si existe)?

man tmuxdice: "La bandera -A hace que la nueva sesión se comporte como adjuntar sesión si el nombre de la sesión ya existe"Respuestas:
Alternativamente, puedes agregar
a su
.tmux.conf- eso creará una sesión predeterminada en el inicio del servidor.Luego
tmux attachse adjuntará a la sesión actual (es decir, el servidor en ejecución) o creará una nueva sesión (iniciará el servidor, leerá el archivo de configuración, emitirá elnew-sessioncomando) y se adjuntará a eso.fuente
new-sessiondestruye, entonces parece ser un problema real.source-file ~/.tmux.conf)-Aopciónnew-sessionsi nombra su sesión.new-session -A -s mysessionjugará bien con la recarga de configuración.Lo descubrí ( y me lo señaló ).
fuente
tmux attach-session -t my-session || tmux new-session -s my-session. El único problema es que esto no es atómico. tmux realmente debería tener un comando de crear o adjuntar.alias tm='tmux attach || tmux new'tmux attach -t some_name || tmux new -s some_name. Cambie some_name a $ 1, agregue un shebang y guarde.newvsnew-session: son sinónimos, y también lo sonattachyattach-session.tmux new-session -ds default \; split-window -dv 2>/dev/null; tmux attach -t defaultfunciona mucho mejor y no abre un segundo tmux en caso de que sea/bin/killel primero. El único inconveniente es que debe nombrar las sesiones para esto.Como se señaló en los comentarios de Petr Viktorin , jkoelker y pjincz , puede usar el siguiente comando para adjuntarlo
mySessionsi existe y para crearlo si no existe:De
man tmux:new-sessionha soportado-Adesde tmux-1.8 .fuente
gnome-terminalcomo el comando, le sugiero que omita el-snombre de sesión y el nombre de sesión específico para que no termine con CADAgnome-terminalsesión nueva adjunta a la misma sesión. Siempre puede seleccionar una sesión existenteprefix + sdespués de abrir una nueva terminal.Aunque considero que la respuesta de rampion es suficiente para usar 1 sesión, este script le permite configurar varias sesiones:
NOTA:
fuente
Adaptando la sugerencia de Alex de incluir una configuración basada en proyectos al inicio, comencé a usar lo siguiente:
¿Dónde
tmux-myproject.confestá mi serie de comandos tmux de inicio para crear mis ventanas y paneles, así como para iniciar mis editores?fuente
Utilizo un alias para crear una nueva sesión si es necesario, y adjunto a mi sesión predeterminada si ya existe:
Agregué esto a mi .login en mi servidor.
La razón por la que lo hago de esta manera es porque no quiero adjuntarme a la misma sesión real, quiero una nueva sesión que use el mismo grupo de ventanas.
Esto también es similar a correr
screen -xRR.fuente
tmux list-sessions.tmux new -A -s defaultpara iniciar una nueva sesión si no existe o adjuntarla automáticamente. Creo que es mucho mejor que editar el archivo de configuración.Para aquellos que quieren hacer lo mismo en
fish:fuente