Nazwa sesji jest przechowywana w zmiennej tmux#S
, aby uzyskać do niej dostęp w terminalu , możesz to zrobić
tmux display-message -p "#S"
Jeśli chcesz go użyć .tmux.conf
, to po prostu #S
. Zauważ, że -p
opcja wypisze wiadomość na standardowe wyjście, w przeciwnym razie wiadomość zostanie wyświetlona w linii statusu tmux .
Jeśli powyższe polecenie zostanie wywołane w ramach sesji, zwróci nazwę sesji. Jeśli zostanie wywołany poza dowolną sesją, nadal zwróci nazwę ostatniej wciąż działającej sesji. Nie mogłem znaleźć komendy tmux do sprawdzenia, czy jest ona w sesji, czy nie, więc musiałem wymyślić tę pracę:
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessions
pokazuje wszystkie sesje, jeśli jedna jest dołączona, pokazuje (attached)
na końcu. Za pomocą sed pomijamy wszystkie dane wyjściowe (opcję -n
) oprócz tego, gdzie znajdujemy słowo kluczowe (attached)
, w tym wierszu odcinamy wszystko po znaku :
, co pozostawia nam nazwę sesji. W przeciwieństwie do mnie działa to w sesji i poza nią tmux display-message -p "#S"
.
Oczywiście działa to tylko wtedy, gdy w nazwie sesji nie ma ani :
nie (attached)
.
Jak skomentował Chris Johnsen , sposobem sprawdzenia, czy ktoś jest w sesji tmux, jest sprawdzenie, czy ustawiona jest jego zmienna środowiskowa:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"
tmux
sesję, aw drugiej jestem pozatmux
sesją. Kiedy wpisuję oba z nichtmux display-message -p "#S"
, drukowany jest ten sam wynik, a zwracana wartość obu poleceń jest taka sama.