Tmux - एक स्क्रिप्ट से एक विंडो में प्रत्येक फलक का # प्राप्त करें?


12

क्या Tmux में किसी विशेष फलक के फलक सूचकांक का पता लगाने का कोई तरीका है?

मुझे पता है मैं कुछ इस तरह चला सकता हूं:

tmux display-message -p  "#{pane_index}"  

लेकिन यह केवल सक्रिय फलक पर काम करता है। मैं यह चाहता हूं कि इसमें जो भी फलक चल रहा है, उसके लिए काम करें। आम तौर पर एक पटकथा में पटकथा को चलाना कठिन होता है, जो सक्रिय फलक नहीं है, लेकिन यदि आप :set-window-option synchronize-panesसभी पैन के बीच इनपुट को सिंक करने के लिए उपयोग कर सकते हैं।

मैं इसका उपयोग कैसे करूंगा?

अपनी नौकरी में मुझे एक ही समय में एक लोड बैलेंसर में कई समान सर्वर से कनेक्ट करने की आवश्यकता होती है, जो मैं Tmux पैन के साथ करता हूं। मैं सामान्य रूप से मुझे उसी समय प्रत्येक फलक पर जो कुछ भी टाइप करने के लिए भेजा जाता है, मुझे अनुमति देने के लिए सिंक्रोनाइज़ पैन पैन सुविधा चालू करता है। यह बहुत अच्छा काम करता है।

मुझे लगता है कि बात यह है कि मैं सर्वर से कनेक्ट करना चाहता हूं और कभी-कभी प्रत्येक "पेन इंडेक्स" का उपयोग करके प्रत्येक बार कभी-कभी प्रत्येक फलक पर कुछ अनोखा करना चाहता हूं। उदाहरण के लिए, मैं एक कमांड चलाऊंगा जैसे:

ssh NODE_$(get_pane_number)

जब, जब प्रत्येक फलक में सिंक्रनाइज़ और चलाया जाता है, तो 4 पैन के साथ एक विंडो में निम्नलिखित कमांड चलाएंगे:

ssh NODE_0 फलक में ०

ssh NODE_1 फलक में १

ssh NODE_2 फलक में २

ssh NODE_3 फलक में ३

मैं बेशक इसकी स्क्रिप्ट कर सकता हूं, लेकिन इससे पहले कि मैं इनपुट्स को सिंक्रोनाइज़ करना शुरू करूं , तब ही यह अच्छी तरह से काम करेगा । कई बार जब मैं इनपुट के साथ ही सिंक्रोनाइज़ करना शुरू करता हूं, तब मैं ऐसा करना चाहता हूं।

जवाबों:


12

tmux (चूंकि v1.5) एक फलक के लिए लॉन्च होने वाली प्रक्रिया के वातावरण में TMUX_PANE प्रदान करता है; प्रत्येक नए फलक को सर्वर-अद्वितीय मान मिलता है। तो, यह मानते हुए कि TMUX_PANE आपके वातावरण में उपलब्ध है, तो मुझे वही करना चाहिए जो मुझे लगता है कि आप चाहते हैं:

tmux display -pt "${TMUX_PANE:?}" '#{pane_index}'

${…:?}एक बॉर्न की तरह नहीं है या खाली मापदंडों का विस्तार खोल रोकता में वाक्य रचना। इस मामले में, एक खाली विस्तार "वर्तमान में सक्रिय फलक" का उपयोग करने के डिफ़ॉल्ट पर वापस आ जाएगा, जो आमतौर पर है - लेकिन हमेशा नहीं - "इस फलक" के रूप में ही (वे संभवत: भिन्न होंगे यदि कमांड का tty एक नहीं है उस tmux की शुरुआत हुई; उदाहरण के लिए स्क्रिप्ट या अपेक्षा , वगैरह का उपयोग करने के कारण )।


मिठाई! यह पूरी तरह से किया ... बहुत सराहना की!
ब्रैड पार्क्स

"$ {TMUX_PANE :?}" सिंटैक्स मछली के खोल में काम नहीं करता है
कोडीन

2

आप सभी पैन इंडेक्स के साथ-साथ पैन के बारे में कई अन्य जानकारी प्राप्त कर सकते हैं

tmux list-panes -a

tmux(1)आप प्राप्त कर सकते हैं और साथ काम करने के लिए जानकारी की एक सूची प्राप्त करने के लिए FORMATS देखें ।


1
प्रतिक्रिया के लिए धन्यवाद - लेकिन यह मुझे नहीं बताता है कि कौन सा फलक है - बस एक विंडो में 0-3 पैन हैं, जिन्हें मैं पहले ही समझ सकता हूं। मैं एक बैश स्क्रिप्ट लिखने में सक्षम होना चाहता हूं जिसे get_pane_numberवास्तव में फलक सक्रिय होने के बिना सही # लौटाता है।
ब्रैड पार्क्स

2

दो प्रस्तावित समाधानों का निर्माण करना, मुझे यह कार्य मेरे लिए काम आया:

I=$(tmux list-panes -a | grep $TMUX_PANE 2>/dev/null | awk -F: '{print $2}' | awk -F. '{print $2}')

इंडेक्स = 1 से शुरू होने वाली एक ही बात

I=$(($(tmux list-panes -a | grep $TMUX_PANE 2>/dev/null | awk -F: '{print $2}' | awk -F. '{print $2}') + 1))

यह सबसे सुंदर नहीं है, लेकिन यह काम करता है और मैं इसे अपने में छोड़ सकता हूं .bashrcऔर $Iजब भी जरूरत हो, बस उपयोग कर सकता हूं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.