চলমান tmux সেশনে টিএমউक्स ফলকে একটি কমান্ড চালান বা প্রেরণ করুন


60

আমি একটি শেল স্ক্রিপ্ট লিখতে চাই যা নামযুক্ত টিএমউक्स সেশনে সংযুক্ত হবে, সেই সেশনে একটি উইন্ডো (বা ফলক) নির্বাচন করবে এবং সেই নির্বাচিত উইন্ডোতে (বা ফলক) একটি কমান্ড চালাবে।

আমি কীভাবে বাশ স্ক্রিপ্ট থেকে এটি করব?

আমি জানি

tmux new-window -n:mywindow 'exec something'

আমাকে নতুন করে তৈরি উইন্ডোতে কমান্ড প্রেরণে অনুমতি দেয় তবে আমার মতো কিছু দরকার

tmux select-window -t:0 'my command'

আমি মনে করি আমি ব্যবহার করতে পারলাম send-keysতবে মনে হচ্ছে এমন কোনও কিছু থাকা উচিত যা একটি আদেশ বা রান কমান্ডের তালিকা গ্রহণ করে।

উত্তর:


82

প্রতিটি tmux ফলক একটি একক pty (সিউডো tty) এর জন্য একটি ইন্টারফেস is বিভক্ত উইন্ডোগুলির একটি একক ফলক রয়েছে; বিভক্ত উইন্ডোতে একাধিক প্যান রয়েছে।

প্রাথমিক কমান্ডটি শুরু করার পরে tmux একটি ফলকে অতিরিক্ত প্রক্রিয়া যুক্ত করার উপায় সরবরাহ করে না। সেই টার্মিনালের জন্য 1 জব নিয়ন্ত্রণ 1 সরবরাহ করা প্রাথমিক কমান্ডের প্রক্রিয়া (সাধারণত একটি শেল) up

আপনি যদি বর্তমানে ফলকে যা চলছে তা ক্লোবার করতে চান, আপনি respawn-pane -kবিদ্যমান কমান্ডটি মেরে নতুন একটি (উদাহরণস্বরূপ respawn-pane -t sessionname:0.4 -k 'some -new command') দিয়ে প্রতিস্থাপন করতে পারেন ।

কিন্তু, যদি আপনি বজায় রাখার জন্য যাই হোক না কেন বর্তমানে ফলকে চলছে চান তাহলে, কোন ভালো বিকল্প যে শুধু "টাইপিং এ" সঙ্গে হতে পারে send-keys

আপনি এটি এর মতো স্ক্রিপ্ট করতে পারেন (শেষ সংযুক্ত করুন, কারণ অন্যথায় স্ক্রিপ্টটি কেবল চালিয়ে যাওয়ার আগে আপনাকে আলাদা করার জন্য অপেক্ষা করবে):

session=whatever
window=${session}:0
pane=${window}.4
tmux send-keys -t "$pane" C-z 'some -new command' Enter
tmux select-pane -t "$pane"
tmux select-window -t "$window"
tmux attach-session -t "$session"

নোট করুন, send-keysকমান্ডে, আপনাকে উইন্ডোতে একটি নতুন লাইন কী প্রেরণ E n t e rকরতে বলার tmuxজন্য অক্ষরগুলি টাইপ করা উচিত । (স্বাভাবিকভাবেই, প্রতিটি কমান্ড Enterকী দিয়ে শেষ হয় ))


1 জব কন্ট্রোল হ'ল একক সেশনের একাধিক প্রক্রিয়া গোষ্ঠীর মধ্যে সালিশ যা এটি টিটিটিকে নিয়ন্ত্রণকারী টার্মিনাল হিসাবে ব্যবহার করে। অর্থাত, Ctrl+ + Zকী সাসপেন্ড হয়ে থাকে, এবং jobs, fgএবং bgশেল কমান্ড।


2
এর জন্য ধন্যবাদ! আমি #{session_name}:#{window_index}.#{pane_index}আমার স্ট্যাটাস লাইনে রেখেছি যাতে আমি দ্রুত কোন প্যানেলে আদেশ পাঠাতে হবে তা দেখতে পাচ্ছি।
একটি প্রদত্ত নার্দ

11

আপনি C-mপরিবর্তে ব্যবহার করতে পারেন Enter। ইহা একই জিনিস. এছাড়াও, tmuxব্যবহার করে -t rightবা ডান / বাম ফলকে প্রেরণ সহজ করে তোলে -t left। এবং যদি আপনি অন্য একটি উইন্ডোতে একটি ফলকে মোকাবেলার করতে চাই, শুধু এটা জানালা নম্বর এবং কাল, মতো পূর্বে ভী -t 0.right

এখন আপনি একটি সহজ বাশ ফাংশনটি যুক্তি হিসাবে কীগুলির ক্রম পেতে এবং সহজেই লক্ষ্য প্যানে পাঠাতে পারেন।

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