Acho que você pode conseguir o que procura usando um formato apropriado com tmux list-session
e analisando a saída:
if [ -z "$TMUX" ]; then
attach_session=$(tmux 2> /dev/null ls -F \
'#{session_attached} #{?#{==:#{session_last_attached},},1,#{session_last_attached}} #{session_id}' |
awk '/^0/ { if ($2 > t) { t = $2; s = $3 } }; END { if (s) printf "%s", s }')
if [ -n "$attach_session" ]; then
tmux attach -t "$attach_session"
else
tmux
fi
fi
O formato aqui para tmux ls
fornece, para cada sessão, o número de clientes anexados, a hora em que foi anexado pela última vez (ou 1 se nunca anexado antes, como após tmux new -d
) e ID da sessão. O script AWK usa essas informações para localizar a sessão anexada mais recentemente sem nenhum cliente atualmente conectado e exibe seu ID. Em seguida, anexamos a essa sessão ou criamos uma nova, se essa sessão não for encontrada, como quando o servidor não é iniciado ou quando todas as sessões existentes são anexadas.