El tmux attachcomando actúa más como una combinación de screen -ry screen -x, primero, trata de adjuntarse a la sesión desconectada más recientemente y luego, si no hay ninguna disponible, se adjuntará a una sesión adjunta actualmente. Quiero emular el comportamiento de screen -R: primero intente adjuntar a una sesión separada, luego comience una nueva sesión si no hubo sesiones separadas. ¿Cuál es la mejor manera de lograr esto en tmux?
10

(tmux ls 2>/dev/null | grep -vq attached && tmux at) || tmuxA pesar de lo que dice en el manual de tmux:
La respuesta de Drew no funcionará correctamente en una situación como:
tmux atse adjuntará a la última sesión (# 1) (a pesar de que esta sesión todavía está adjunta en otro lugar). Esto arruina la idea de ejecutar varias sesiones de tmux y conectarlas solo a una separada (para usar mosh + tmux + iterm2 para crear un terminal de itinerancia perfecto).Otro enfoque sería seleccionar manualmente una sesión no adjunta:
tmux ls | grep -vq attached && tmux at `tmux ls | grep -vm1 attached | cut -d: -f1`fuente
Tiendo a tener solo dos sesiones tmux a la vez, así que hago algo como esto en cada ventana de terminal.
ventana de terminal 0:
ventana de terminal 1:
fuente
Esto ha funcionado mejor para mí:
El -t es necesario para adjuntar a la sesión adecuada.
fuente
Qué pasa
o simplemente cree el archivo
~/.tmux.confsi no existe y agreguepara que cree una nueva sesión cuando no hay ninguna cuando se ejecuta
tmux attach.También podría ser útil hacer
tmuxun aliastmux attach.fuente