जवाबों:
साथ tmux 1.2 (और बाद में), तो आप उपयोग कर सकते हैं -pका विकल्प display-messageउत्पादन के लिए एक संदेश stdout (एक संलग्न ग्राहक को प्रदर्शित करने के बजाय) के लिए:
tmux display-message -p '#S'
#Sसत्र नाम के रूप में स्वरूपित किया गया है ( status-leftमैन पेज में विकल्प का विवरण देखें )।
मुझे आश्चर्य है कि, लगभग 5 वर्षों के बाद, किसी ने भी ध्यान नहीं दिया है कि इनमें से कोई भी उत्तर पर्याप्त नहीं है। जब तक दोनों ठीक काम करते हैं, जब तक कि वर्तमान TTY होस्ट पर केवल tmux सत्र से जुड़ा होता है, ये उत्तर दोनों गिर जाते हैं यदि:
पूर्व के मामले में, दोनों जवाब यहां संलग्न सत्र का नाम वापस देते हैं (इस बात की परवाह किए बिना कि क्या वर्तमान टेट उस सत्र द्वारा शासित है)। उत्तरार्द्ध मामले में, परिणाम संभावना अनिश्चित है या कई उत्तरों में परिणाम देगा।
उचित प्रश्न यह होना चाहिए, "tmux सेशन का नाम क्या है जिससे मेरा वर्तमान टर्मिनल सत्र संलग्न है?"
उस प्रश्न के उत्तर के लिए , निष्पादित करें:
for s in $(tmux list-sessions -F '#{session_name}'); do
tmux list-panes -F '#{pane_tty} #{session_name}' -t "$s"
done | grep "$(tty)" | awk '{print $2}'
यह tmux सत्रों की संख्या (संलग्न या अन्यथा) की परवाह किए बिना काम करता है और इस बात की परवाह किए बिना कि वर्तमान टर्मिनल सत्र tmux सत्र का हिस्सा है या नहीं।
tmux list-panes -a -F '#{pane_tty} #{session_name}'प्रत्येक सत्र के पैन को सूचीबद्ध करने के लिए भी उपयोग कर सकते हैं । निश्चित नहीं है कि नया कैसा -aहै, इसलिए YMMV।
TMUXचलने से पहले पर्यावरण चर की जाँच के साथ संयुक्त tmux display-message -p '#S'।
विस्तारित / सुधारा टिम-लोगों के जवाब
के अनुसार don_crissti की टिप्पणी
पर ऐसा क्यों है grep -vकी उम्मीद के रूप में कार्य नहीं कर रहा? ।
टिम-पीपल के जवाब में "$ (ट्टी)" कमांड
| grep "$ (tty)" |
अपेक्षा के अनुरूप उस संदर्भ में काम नहीं करेंगे। यह एक स्ट्रिंग का मूल्यांकन करता है 'ट्टी नहीं'।
इसे एक चर के साथ बदलने से यह समस्या हल हो जाती है।
tty = $ (tty)
...
| grep "$ ट्टी" |
इसके अलावा, जब कोई tmux सत्र मौजूद नहीं होता है, तो मूल कोड का उत्पादन होगा
"कोई सर्वर नहीं चल रहा है / tmp / tmux-1000 / default" त्रुटि संदेश।
जोड़ें 2>/dev/nullऔर कोड त्रुटि संदेश को प्रिंट किए बिना चलेगा।
संशोधित कोड इस प्रकार है:
tty=$(tty)
for s in $(tmux list-sessions -F '#{session_name}' 2>/dev/null); do
tmux list-panes -F '#{pane_tty} #{session_name}' -t "$s"
done | grep "$tty" | awk '{print $2}'