Der tmux attach
Befehl verhält sich eher wie eine Kombination aus screen -r
und screen -x
- zuerst wird versucht, eine Verbindung zur zuletzt getrennten Sitzung herzustellen. Wenn keine verfügbar ist, wird eine Verbindung zu einer aktuell angehängten Sitzung hergestellt. Ich möchte das folgende Verhalten emulieren screen -R
: Versuchen Sie zunächst, eine Verbindung zu einer getrennten Sitzung herzustellen, und starten Sie dann eine neue Sitzung, wenn keine getrennten Sitzungen vorhanden waren. Was ist der beste Weg, um dies in tmux zu erreichen?
10
(tmux ls 2>/dev/null | grep -vq attached && tmux at) || tmux
Trotz allem, was im tmux-Handbuch steht:
Drews Antwort funktioniert in einer Situation wie der folgenden nicht richtig:
tmux at
wird an die letzte Sitzung angehängt (# 1) (obwohl diese Sitzung noch an einer anderen Stelle angehängt ist). Dies ruiniert die ganze Idee, mehrere tmux-Sitzungen auszuführen und nur an eine getrennte anzuschließen (um mit mosh + tmux + iterm2 ein perfektes Roaming-Terminal zu erstellen).Ein anderer Ansatz wäre die manuelle Auswahl einer nicht angehängten Sitzung:
tmux ls | grep -vq attached && tmux at `tmux ls | grep -vm1 attached | cut -d: -f1`
quelle
Ich habe normalerweise nur zwei tmux-Sitzungen gleichzeitig, also mache ich so etwas in jedem Terminalfenster.
Terminalfenster 0:
Terminalfenster 1:
quelle
Das hat bei mir am besten funktioniert:
Das -t wird benötigt, um eine Verbindung zur richtigen Sitzung herzustellen.
quelle
Wie wäre es mit
oder erstellen
~/.tmux.conf
Sie stattdessen einfach die Datei, falls sie nicht vorhanden ist, und fügen Sie sie hinzudazu, dass es eine neue Sitzung erstellt, wenn beim Ausführen keine vorhanden ist
tmux attach
.Es kann auch nützlich sein,
tmux
einen Alias zu erstellentmux attach
.quelle