2014-04-10 3 views
6

ssh के साथ मैं यह कर सकता:मैं मॉश कनेक्शन स्थापित करने के लिए जटिल आदेश कैसे चला सकता हूं?

ssh REMOTE -t 'tmux a || tmux' 
mosh साथ

सबसे अच्छा मैं कर सकता हूँ यह है:

mosh REMOTE -- tmux a 

लेकिन यह काम नहीं करेगा:

mosh REMOTE -- tmux a || tmux 

न तो करता है : (इसका कोई प्रभाव नहीं यह एकल उद्धरण या दोहरे उद्धरण है कि क्या, मैं दोनों की कोशिश की)

mosh REMOTE -- 'tmux a || tmux' 

तो, मेरे सवाल है: कैसे मैं यह काम क्या करना चाहिए?

उत्तर

12

ठीक है, ऐसा लगता है मैं स्पष्ट रूप से निष्पादित करने के लिए एक खोल उपयोग करने के लिए आदेश है: ~/.tmux.conf को new-session जोड़ने

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

संपादित

इसके बजाय tmux a || tmux करने का

, एक बेहतर तरीका है और बस tmux चलाएं। इससे चीजें ज्यादा आसान हो जाएंगी। मैं इस तरह अब कर सकते हैं:

mosh REMOTE -- tmux 

बहुत बढ़िया!

+0

मुझे लगता है कि क्या आप दूसरा समाधान में चाहते 'सबसे दूरस्थ है - tmux A' अन्यथा यह एक नया सत्र बजाय एक पहले से मौजूद है कि करने के लिए संलग्न की हर बार पैदा करेगा। – Mortimer

+1

आप 'tmux new-session -A-somenameforsession' भी कर सकते हैं – igor

2

ऊपर दिए गए उदाहरण से अधिक जटिल आदेशों हो सकती है। मैं एक ऐसा आदेश बनाना चाहता था जो किसी मौजूदा tmux सत्र में वापस आ जाए, यदि कोई मौजूद है लेकिन पहले से संलग्न नहीं है, या कोई नया उपलब्ध नहीं है तो कोई नया नहीं है। ऊपर

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

लेकिन वह काम नहीं करता, मूल प्रश्न प्रति:

this example को देखते हुए, मैं कुछ इस तरह से किया जाएगा है।

tmux-reattach-if-exists 

बस के होते हैं जो:

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

तो मैं जैसे mosh से ग्राहक पर स्क्रिप्ट बुलाया करते थे

मेरे समाधान अब तक मेजबान सर्वर पर एक आवरण स्क्रिप्ट है इस:

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

अगर वहाँ एक समाधान है कि सीधे .tmux.conf के माध्यम से यह कर सकते हैं कि wo है उल महान हो लेकिन मैं इसे काम नहीं कर सका।

संबंधित मुद्दे