Der Name der Sitzung wird in der Variablen tmux gespeichert #S
, auf die Sie in einem Terminal zugreifen können
tmux display-message -p "#S"
Wenn Sie es verwenden möchten .tmux.conf
, ist es einfach #S
. Beachten Sie, dass die -p
Option die Nachricht auf stdout druckt, andernfalls wird die Nachricht in der Statuszeile von tmux angezeigt .
Wenn der obige Befehl in einer Sitzung aufgerufen wird, gibt er den Namen der Sitzung zurück. Wenn es außerhalb einer Sitzung aufgerufen wird, wird weiterhin der Name der zuletzt noch ausgeführten Sitzung zurückgegeben. Ich konnte keinen tmux- Befehl finden, mit dem ich überprüfen konnte, ob sich einer in einer Sitzung befindet oder nicht. Daher musste ich folgende Lösung finden :
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessions
Zeigt alle Sessions an, wenn eine angehängt ist, wird diese (attached)
am Ende angezeigt. Mit sed unterdrücken wir alle Ausgaben (Option -n
), außer wo wir das Schlüsselwort (attached)
finden. In dieser Zeile schneiden wir nach a alles weg :
, was uns den Namen der Sitzung gibt. Dies funktioniert bei mir innerhalb und außerhalb einer Sitzung im Gegensatz zu tmux display-message -p "#S"
.
Dies funktioniert natürlich nur, wenn im Namen der Sitzung kein :
und kein vorhanden ist (attached)
.
Wie von Chris Johnsen kommentiert , besteht eine Möglichkeit, zu überprüfen, ob sich eine in einer tmux- Sitzung befindet , darin, zu überprüfen , ob die Umgebungsvariable gesetzt ist:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"
tmux
Sitzung und in der anderen bin ich außerhalb dertmux
Sitzung. Wenn ichtmux display-message -p "#S"
beide Befehle eingebe , wird das gleiche Ergebnis gedruckt und der Rückgabewert beider Befehle ist der gleiche.