2014-04-10 11 views

Odpowiedz

12

Cóż, wydaje się, że muszę jawnie użyć powłokę, aby wykonać polecenie:

mosh REMOTE -- sh -c 'tmux a || tmux' 

EDIT

Zamiast robić tmux a || tmux, lepszym sposobem jest dodanie new-session do ~/.tmux.conf i po prostu uruchom tmux. To znacznie ułatwiłoby sprawę. Teraz mogę robić takie rzeczy:

mosh REMOTE -- tmux 

Awesome!

+0

Myślę, że to, czego chcesz w drugim rozwiązaniu, to "najbardziej odległy - tmux a", w przeciwnym razie stworzy nową sesję za każdym razem, zamiast dołączać do już istniejącej. – Mortimer

+1

możesz także zrobić 'tmux new-session -A -s somenameforsession' – igor

2

Może być więcej skomplikowanych poleceń niż podane powyżej przykłady. Chciałem wykonać polecenie, które zostanie ponownie dołączone do istniejącej sesji tmux, o ile istnieje, ale nie jest już dołączone, lub nowe, jeśli nie ma żadnych dostępnych.

Patrząc na this example, bym zrobił coś takiego:

function tmosh() { 
    mosh $1 -- (tmux ls | grep -vq attached && tmux at -t $(tmux ls | grep -vm1 attached | cut -d: -f1)) || tmux new 
} 

Ale to nie działa, za pierwotnego pytania powyżej.

Moje rozwiązanie jakim jest mieć skrypt otoki na serwerach host:

tmux-reattach-if-exists 

która składa się po prostu z:

(tmux ls | grep -vq attached && tmux at -t $(tmux ls | grep -vm1 attached | cut -d: -f1)) || tmux new 

Następnie użyłem nazywa skrypt na kliencie z Mosh jak to:

function tmosh() { 
    mosh $1 -- tmux-reattach-if-exists 
} 

Jeśli istnieje rozwiązanie, które może to zrobić poprzez .tmux.conf bezpośrednio, że wo Byłoby wspaniale, ale nie mogłem tego wymyślić.

Powiązane problemy