2014-04-10 11 views
6

bunu yapabilirimBir mosh bağlantısı kurulmasında karmaşık komutları nasıl çalıştırabilirim? Yapabileceğim en iyi budur konmuş savrul ile</p> <pre><code>ssh REMOTE -t 'tmux a || tmux' </code></pre> <p>: SSH ile

mosh REMOTE -- tmux a 

Ancak bu işe yaramaz:

mosh REMOTE -- tmux a || tmux 

da yok bu : (Tek alıntı veya çift tırnak olup olmadığı farketmez, her ikisini de denedim)

mosh REMOTE -- 'tmux a || tmux' 

Yani, sorum şu: Bu işi nasıl yapacağım?

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

yerine tmux a || tmux yapmanın DÜZENLEME

, daha iyi bir yoludur ~/.tmux.conf için new-session ekleyin:

cevap

12

Eh, ben açıkça komutu çalıştırmak için bir kabuk kullanmak zorunda gibi görünüyor ve sadece tmux'u çalıştırın. Bu işleri daha kolaylaştıracaktır. Bunu şu anda yapabilirim:

mosh REMOTE -- tmux 

Awesome!

+0

İkinci çözümde istediğin şeyin en uzak - tmux a 'olduğunu düşünüyorum, aksi takdirde zaten var olanı eklemek yerine yeni bir oturum oluşturacaktır. – Mortimer

+1

ayrıca tmux yeni-session -A -s somenameforsession 'da yapabilirsiniz – igor

2

Yukarıda verilen örneklerden daha karmaşık komutlar olabilir. Varsa mevcut bir tmux oturumuna yeniden bağlanan, ancak henüz eklenmemiş bir komut veya yeni bir tane varsa, yeni bir tane yapmak istedim. Yukarıda asıl soruya başına,

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

Ama bu işe yaramazsa:

this example baktığımızda, böyle bir şey yapardı.

tmux-reattach-if-exists 

basitçe oluşur:

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

ben istemci üzerinde komut konmuş savrul gelen gibi adlandırılan kullanılan

Benim çözümüm şimdiye kadar ev sahibi sunucularında bir sarıcı betik sahip olmaktır this:

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

Eğer .tmux.conf aracılığıyla bunu doğrudan yapabilecek bir çözüm varsa Harika olmalı ama bunu işe yaramadı.

İlgili konular