Piszę skrypt powłoki, który tworzy / dołącza lub przełącza się do danej sesji, w zależności od tego, czy jest w tmux i sesja istnieje.
Mam wszystko, co działa świetnie, z wyjątkiem przypadku wymagającego utworzenia nowej sesji tmux z poziomu sesji tmux.
Kiedy mój skrypt jest wykonywany tmux new-session -s name
, otrzymuję następujące dane wyjściowe:
sesje powinny być zagnieżdżane ostrożnie, wyłącz $ TMUX na wymuszenie
Właściwie nie chcę zagnieżdżać sesji, moim celem jest utworzenie kolejnej oddzielnej sesji i przełączenie się na nią z poziomu sesji tmux .
czy to możliwe?
Odpowiedzi:
Najszybszym sposobem (zakładając, że użyjesz
ctrl-b
prefiksu polecenia) jest:W takim razie aby utworzyć nową sesję
do interaktywnego wybierania i dołączania do sesji.
źródło
ctrl-b $
Ctrl-b :new -s <name>
nadać nazwę nowej sesji.Jak stworzyć skrypt
Ten skrypt sprawdzi, czy sesja istnieje. Jeśli sesja nie istnieje, utwórz nową sesję i dołącz do niej. Jeśli sesja istnieje, nic się nie dzieje i przyłączamy się do tej sesji. Możesz zamienić `~ / development 'na nazwę projektu.
$ touch ~/development && chmod +x ~/development
Nowa sesja z terminala
Stwórzmy dwie odłączone sesje, wypiszmy je, dołączmy do jednej, a następnie z poziomu tmux cykl przez sesje.
tmux new -s name -d
działa od wewnątrz tmux, ponieważ tworzymy nową odłączoną sesję. W przeciwnym razie wystąpi błąd zagnieżdżenia.Nowa sesja w tmux
Jesteśmy teraz w środku lub lepiej znani jako przywiązani do naszej sesji docelowej. Jeśli spróbujemy utworzyć nową sesję po podłączeniu, spowoduje to błąd zagnieżdżenia.
Aby rozwiązać ten problem, tworzymy nową odłączoną sesję. na przykład,
Cykl (przełącznik) sesji
Prefix
(
poprzednia sesjaPrefix
)
następna sesjauwaga:
Prefix
jestCtrl-b
domyślnie. Możesz powiązać sięPrefix
z,Ctrl-a
aw Mac OSX możesz zmienić Caps Lock na Ctrlsystem preferences > keyboard > modifier keys
Dołącz do sesji przy użyciu trybu poleceń w tmux
Próba dołączenia do sesji bez odłączania zakończy się błędem.
Zamiast tego użyj trybu poleceń,
Prefix
:
a następnie wpiszattach -t session_name
i naciśnij Enter.źródło
U mnie to działa:
W
TMUX=
pierwszym wierszu jest wymagane, aby tmux nie wysyłałsessions should be nested with care, unset $TMUX to force
wiadomości.źródło
TMUX=`tmux new-session -d -s name`
Wszystkie polecenia, które możesz uruchomić w swoim terminalu, na przykład,
tmux new -s sessionName
można uruchomić od wewnątrztmux
, naciskając klawisz wyzwalacza (np .ctrl-b
:), a:
następnie polecenie beztmux
części początkowej .W rezultacie,
ctrl-b :
a następnienew -s sessionName
zrobisz dokładnie to, co chcesz i nadasz nazwę swojej sesji. Przełącza się również automatycznie do nowej sesji.źródło
Możesz spróbować
unset TMUX
najpierw, to działa dla mnie.źródło
zgodnie z radą użytkownika2354696 używam następujących skrótów klawiszowych do tworzenia nowej sesji lub „klonowania” istniejącej sesji
źródło