La tmux attach
commande agit plus comme une combinaison de screen -r
et screen -x
- elle essaie d'abord de se joindre à la session la plus récemment détachée , puis si aucune n'est disponible, elle se joindra à une session actuellement connectée. Je veux émuler le comportement de screen -R
: essayez d'abord de vous attacher à une session détachée, puis démarrez une nouvelle session s'il n'y a pas de sessions détachées. Quelle est la meilleure façon d'y parvenir dans tmux?
10
(tmux ls 2>/dev/null | grep -vq attached && tmux at) || tmux
Malgré ce qu'il dit dans le manuel tmux:
La réponse de Drew ne fonctionnera pas correctement dans une situation comme:
tmux at
s'attachera à la dernière session (# 1) (même si cette session est toujours attachée ailleurs). Cela ruine l'idée de lancer plusieurs sessions tmux et de ne les attacher qu'à une seule session (pour utiliser mosh + tmux + iterm2 pour créer un terminal itinérant parfait).Une autre approche serait de sélectionner manuellement une session non attachée:
tmux ls | grep -vq attached && tmux at `tmux ls | grep -vm1 attached | cut -d: -f1`
la source
J'ai tendance à n'avoir que deux sessions tmux à la fois, donc je fais quelque chose comme ça dans chaque fenêtre de terminal.
fenêtre de terminal 0:
fenêtre de terminal 1:
la source
Cela a fonctionné le mieux pour moi:
Le -t est nécessaire pour attacher à la session appropriée.
la source
Qu'en est-il de
ou créez simplement le fichier
~/.tmux.conf
s'il n'existe pas et ajoutezpour qu'il crée une nouvelle session lorsqu'il n'y en a pas lorsque vous exécutez
tmux attach
.Il peut également être utile de créer
tmux
un aliastmux attach
.la source