Wie neue tmux Sitzung erstellen, wenn keine vorhanden
-
26-09-2019 - |
Frage
Ich versuche, herauszufinden, wie zu einem tmux session
zu befestigen, wenn eine benannte tmux Sitzung vorhanden ist, wenn ich nicht einen neuen mit dem angegebenen Namen erstellt werden soll.
Zur Zeit weiß ich von einigen tmux
Befehlen, die zum Teil kann erreichen, was ich suche, aber es ist nicht klar, wie sie miteinander zu kombinieren, um zu bekommen, was ich suche:
-
tmux attach
Attaches auf eine automatisch vorhandene Sitzung - aber Fehler, wenn keine Sitzung existiert -
tmux new
erstellt eine neue Sitzung - aber es tut so jedes Mal, so dass ich es nicht in meinem.tmux.conf
verlassen -
tmux has-session
prüft, ob eine Sitzung vorhanden ist - aber ich weiß nicht, wie es zu nähen zusammen mit den anderen Befehlen
So würde Ich mag einen tmux Skript erstellen, so dass diese automatisch geschieht, anstatt zu manuell erstellen es jedes Mal muß ich in eine Sitzung protokollieren.
Wie kann ich einen automatischen Skript schreiben, um eine neue tmux Sitzung (wenn eine bestimmte Sitzung Name doesnt exist) oder heften sich an einem Sitzungsnamen erstellen (falls vorhanden)?
Lösung
Alternativ können Sie fügen
new-session
Ihre .tmux.conf
-., Dass eine Standardsitzung auf Serverstart erstellen
Dann tmux attach
wird entweder auf die aktuelle Sitzung anhängen (laufenden Server, das ist), oder eine neue Sitzung erstellen (den Server starten, die Konfigurationsdatei lesen, geben Sie den Befehl new-session
) und dem befestigen.
Andere Tipps
Habe ich es aus ( und hatte darauf hingewiesen, mir ).
tmux attach || tmux new
Wie bereits ausgeführt in den Kommentaren von Petr Viktorin , jkoelker und man tmux
:
new-session
[-AdDEP] [-c
start-directory
] [-F
format
] [-n
window-name
] [-s
session-name
] [-t
group-name
] [-x
width
] [-y
height
] [
shell-command
]
(alias:
Erstellennew
)eine neue Sitzung mit dem Namen
session-name
.[...]
Die
-A
Flagge Markennew-session
verhalten sich wieattach-session
, wennsession-name
bereits vorhanden ist; in diesem Fall-D
verhält sich wie-d
aufattach-session
.
Obwohl ich rampion Antwort ist ausreichend für die Verwendung von 1-Sitzung, dieses Skript können Sie Setup mehrere Sitzungen finden:
SESSIONS="work play"
function has-session {
tmux has-session -t $1 2>/dev/null
}
function except
{
if [ "$?" -eq 1 ] ; then
$1
fi
}
# Configure your sessions here
function session-work
{
tmux new-session -d -s work
tmux neww -k -t work:1
}
function session-play
{
tmux new-session -d -s play
tmux neww -k -t play:1
}
#
#MAIN
for x in $SESSIONS
do
echo $x
has-session $x
except session-$x
done
Hinweis:
-k --> new-window will not be created if already exists
-d --> start session or window, but don't attach to it yet
-s --> name the session
-t --> specify a target location in the form session:window.pane
Die Anpassung Alex Vorschlag Projekt basierte Konfiguration beim Start sind, begann ich folgendes mit:
# ~/bin/tmux-myproject shell script
# The Project name is also used as a session name (usually shorter)
PROJECT_NAME="myproject"
PROJECT_DIR="~/myproject"
tmux has-session -t $PROJECT_NAME 2>/dev/null
if [ "$?" -eq 1 ] ; then
echo "No Session found. Creating and configuring."
pushd $PROJECT_DIR
tmux new-session -d -s $PROJECT_NAME
tmux source-file ~/bin/tmux-${PROJECT_NAME}.conf
popd
else
echo "Session found. Connecting."
fi
tmux attach-session -t $PROJECT_NAME
wo tmux-myproject.conf
ist meine Startreihe tmux Befehle meine Fenster und Scheiben zu schaffen, wie auch meine Redakteure starten.
Ich verwende einen Alias ??eine neue Sitzung zu erstellen, wenn nötig, und zu meiner Standardsitzung anhängen, wenn sie bereits vorhanden ist:
alias tmuxre='tmux new-session -t default || tmux new-session -s default'
Ich habe das mein .login auf meinem Server.
Der Grund, warum ich es tun diese Art und Weise ist, weil ich nicht auf den gleichen aktuellen Sitzung anhängen will, ich will eine neue Sitzung, die die gleiche Gruppe von Fenstern verwendet.
Dies ist auch ähnlich screen -xRR
ausgeführt wird.
Für diejenigen, die die gleiche Sache in fish
zu tun:
tmux attach -t mysesh; or tmux new -s mysesh