টিমাক্স - একটি স্ক্রিপ্ট থেকে উইন্ডোতে প্রতিটি ফলকের # ফলক পান?


12

Tmux- এ কোনও নির্দিষ্ট ফলকের ফলক সূচকটি খুঁজে পাওয়ার কোনও উপায় আছে কি?

আমি জানি আমি এই জাতীয় কিছু চালাতে পারি:

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

তবে এটি কেবল সক্রিয় ফলকে কাজ করে। আমি এটির যে ফলকটি চালিয়েছি তার জন্য এটি কাজ করা চাই :set-window-option synchronize-panesNor

আমি এটি কীভাবে ব্যবহার করব?

আমার চাকরিতে আমার একই সময়ে লোড ব্যালান্সারের একাধিক অভিন্ন সার্ভারের সাথে সংযোগ স্থাপন করা দরকার যা আমি টিএমাক্স প্যানগুলির সাথে করি। আমি একই সাথে প্রতিটি ফলকে আমি একইভাবে প্রেরণ করি তা যা কিছু থাকতে দেয় তা করার জন্য আমি সাধারণত সিঙ্ক্রোনাইজ প্যান বৈশিষ্ট্যটি চালু করি। এটি দুর্দান্ত কাজ করে।

আমি যে জিনিসটি সন্ধান করেছি তা হ'ল আমি সার্ভারের সাথে সংযোগ করতে এবং প্রতিটি প্যানে মাঝে মাঝে একই "ফলক সূচক" ব্যবহার করে মাঝে মাঝে প্রতিটি প্যানে অনন্য কিছু করতে চাই। উদাহরণস্বরূপ, আমি এরকম একটি কমান্ড চালাতাম:

ssh NODE_$(get_pane_number)

যা, প্রতিটি প্যানে সিঙ্ক্রোনাইজ ও চালিত হলে 4 টি প্যান সহ একটি উইন্ডোতে নিম্নলিখিত কমান্ডগুলি চালিত করে:

ssh NODE_0 ফলক 0 এ

ssh NODE_1 ফলক 1

ssh NODE_2 ফলক 2

ssh NODE_3 ফলক 3

আমি অবশ্যই এটির স্ক্রিপ্ট করতে পারি, তবে ইনপুটগুলি সিঙ্ক্রোনাইজ করা শুরু করার আগে এটি কেবলমাত্র ভাল কাজ করবে । কিছু সময় আছে যখন আমি ইনপুটগুলিও সিঙ্ক্রোনাইজ করা শুরু করার পরে এটি করতে চাই।

উত্তর:


12

tmux (v1.5 সাল থেকে) একটি ফলকের জন্য প্রক্রিয়াকরণের প্রক্রিয়াটির পরিবেশে TMUX_PANE সরবরাহ করে; প্রতিটি নতুন ফলক একটি সার্ভার-অনন্য মান পায়। সুতরাং, ধরে নিলাম যে আপনার পরিবেশে TMUX_PANE উপলব্ধ, তবে এটি আপনার করা উচিত বলে মনে করেন:

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

${…:?}একটি বোর্ন মত হারিয়েছে বা ফাঁকা পরামিতি সম্প্রসারণ শেল প্রতিরোধ সিনট্যাক্স। এই ক্ষেত্রে, একটি খালি সম্প্রসারণ "বর্তমানে সক্রিয় প্যান" ব্যবহারের ডিফল্টটিতে ফিরে আসবে, যা সাধারণত - তবে সর্বদা হয় না - "এই ফলক" এর মতো হয় (কমান্ডের টিটিটি যদি না হয় তবে তারা সম্ভবত পৃথক হবে) যে tmux শুরু হয়েছে; যেমন স্ক্রিপ্ট ব্যবহার বা প্রত্যাশার কারণে , ইত্যাদি।


মিষ্টি! এটি সম্পূর্ণরূপে এটি করেছে ... অনেক প্রশংসা!
ব্র্যাড পার্কস

"$ {TMUX_PANE :? synt" সিনট্যাক্সটি ফিশ-শেলটিতে কাজ করে না
কোডিচান

2

আপনি সমস্ত ফলক সূচক পাশাপাশি প্যানগুলি সম্পর্কিত আরও অনেক তথ্য পেতে পারেন

tmux list-panes -a

আপনি tmux(1)যে তথ্যের সাথে কাজ করতে পারেন তার একটি তালিকা পেতে ফর্ম্যাটগুলি দেখুন ।


1
প্রতিক্রিয়াটির জন্য ধন্যবাদ - তবে এটি আমাকে কোনটি ফলকটি বলে না - কেবল একটি উইন্ডোতে 0-3 প্যান রয়েছে, যা আমি ইতিমধ্যে বুঝতে পারি। আমি কোনও বাশ স্ক্রিপ্ট লিখতে সক্ষম হতে চাই যা ফলকটি সক্রিয় না হয়ে get_pane_numberআসলে ডান ফিরে আসে returns
ব্র্যাড পার্কস

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যখনই আমার প্রয়োজন হবে কেবল এটি ব্যবহার করতে পারি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.