O tmux attach
comando age mais como uma combinação de screen -r
e screen -x
- primeiro tenta se conectar à sessão desanexada mais recente e, se não houver nenhum disponível, ele será anexado a uma sessão atualmente anexada. Quero emular o comportamento de screen -R
: primeiro tente conectar-se a uma sessão desanexada e, em seguida, inicie uma nova sessão se não houver sessões desanexadas. Qual é a melhor maneira de conseguir isso no tmux?
10
(tmux ls 2>/dev/null | grep -vq attached && tmux at) || tmux
Apesar do que diz no manual do tmux:
A resposta de Drew não funcionará corretamente em uma situação como:
tmux at
será anexado à última sessão (nº 1) (mesmo que essa sessão ainda esteja anexada em outro lugar). Isso arruina toda a idéia de executar várias sessões do tmux e se conectar apenas a uma sessão desanexada (para usar o mosh + tmux + iterm2 para criar um terminal de roaming perfeito).Outra abordagem seria selecionar manualmente uma sessão não anexada:
tmux ls | grep -vq attached && tmux at `tmux ls | grep -vm1 attached | cut -d: -f1`
fonte
Eu costumo ter apenas duas sessões do tmux por vez, então faço algo assim em cada janela do terminal.
janela do terminal 0:
janela do terminal 1:
fonte
Isso funcionou melhor para mim:
O -t é necessário para se conectar à sessão apropriada.
fonte
A respeito
ou apenas crie o arquivo
~/.tmux.conf
se ele não existir e adicionepara que crie uma nova sessão quando não houver nenhuma quando você executar
tmux attach
.Também pode ser útil criar
tmux
um alias paratmux attach
.fonte