Ich schreibe ein Shell-Skript, das eine bestimmte Sitzung erstellt / anfügt oder zu dieser wechselt, je nachdem, ob sich eine in tmux befindet und die Sitzung vorhanden ist.
Ich habe alles gut gemacht, bis auf den Fall, dass eine neue tmux-Sitzung innerhalb einer tmux-Sitzung erstellt werden muss.
Wenn mein Skript ausgeführt wird tmux new-session -s name
, erhalte ich die folgende Ausgabe:
Sitzungen sollten sorgfältig verschachtelt und $ TMUX deaktiviert werden
Ich möchte eigentlich keine Sitzungen verschachteln. Mein Ziel ist es, eine weitere separate Sitzung zu erstellen und innerhalb einer tmux-Sitzung zu dieser zu wechseln .
Ist das möglich?
Antworten:
Der schnellste Weg (vorausgesetzt, Sie verwenden ihn
ctrl-b
als Befehlspräfix) ist:So erstellen Sie eine neue Sitzung
interaktiv auswählen und an die Sitzung anhängen.
quelle
ctrl-b $
Ctrl-b :new -s <name>
um der neuen Sitzung einen Namen zu geben.So erstellen Sie das Skript
Dieses Skript prüft, ob eine Sitzung vorhanden ist. Wenn keine Sitzung vorhanden ist, erstellen Sie eine neue Sitzung und hängen Sie sie an. Wenn eine Sitzung existiert, passiert nichts und wir hängen an diese Sitzung an. Fühlen Sie sich frei, "~ / development" durch den Projektnamen zu ersetzen.
$ touch ~/development && chmod +x ~/development
Neue Sitzung vom Terminal
Lassen Sie uns zwei getrennte Sitzungen erstellen, sie auflisten, an eine anhängen und dann innerhalb des tmux-Zyklus durch die Sitzungen gehen.
tmux new -s name -d
funktioniert innerhalb von tmux, da wir eine neue getrennte Sitzung erstellen. Andernfalls wird ein Verschachtelungsfehler angezeigt.Neue Sitzung innerhalb von tmux
Wir sind jetzt drinnen oder besser bekannt als an unsere Zielsitzung gebunden . Wenn wir versuchen, eine neue Sitzung zu erstellen, während sie angehängt ist, führt dies zu einem Verschachtelungsfehler.
Um dies zu lösen, erstellen wir eine neue getrennte Sitzung. z.B,
Sitzungen wechseln (wechseln)
Prefix
(
vorherige SitzungPrefix
)
nächste SitzungHinweis:
Prefix
istCtrl-b
standardmäßig. Sie können bindenPrefix
anCtrl-a
und in Mac OSX können Sie Caps ctrl Sperren ändernsystem preferences > keyboard > modifier keys
Stellen Sie im Befehlsmodus eine Verbindung zu einer Sitzung her, während Sie sich in tmux befinden
Der Versuch, eine Verbindung zu einer Sitzung herzustellen, ohne die Verbindung zu trennen, führt zu einem Fehler.
Stattdessen verwenden Sie den Befehl Modus
Prefix
:
geben Sie dannattach -t session_name
und drücken Sie die Eingabetaste.quelle
Dies funktioniert bei mir:
Das
TMUX=
in der ersten Zeile ist erforderlich, damit tmux keinesessions should be nested with care, unset $TMUX to force
Nachricht ausgibt .quelle
TMUX=`tmux new-session -d -s name`
Alle Befehle, die Sie in Ihrem Terminal starten können,
tmux new -s sessionName
können von innentmux
durch Drücken der Auslösetaste (zB :)ctrl-b
und:
dann des Befehls ohne Startteil gestartet werdentmux
.Infolgedessen wird
ctrl-b :
gefolgt vonnew -s sessionName
genau das tun, was Sie wollen, und Ihrer Sitzung einen Namen geben. Es wird auch automatisch zur neuen Sitzung gewechselt.quelle
Sie können
unset TMUX
zuerst versuchen , das funktioniert bei mir.quelle
Auf Anraten von user2354696 verwende ich die folgenden Tastenkombinationen, um eine neue Sitzung zu erstellen oder eine vorhandene Sitzung zu "klonen"
quelle