একটি tmux সেশনের অভ্যন্তর থেকে নতুন tmux সেশন তৈরি করুন


105

আমি একটি শেল স্ক্রিপ্ট লিখছি যা কোনও টিমাক্সের ভিতরে রয়েছে এবং সেশনটি বিদ্যমান কিনা তার উপর নির্ভর করে কোনও নির্দিষ্ট অধিবেশন তৈরি করে / সংযুক্ত করে বা স্যুইচ করে।

টিএমউস সেশনের মধ্যে থেকে নতুন টিএমএক্স সেশন তৈরির প্রয়োজনের ক্ষেত্রে ব্যতীত আমি দুর্দান্ত কিছু কাজ করেছি।

যখন আমার স্ক্রিপ্টটি কার্যকর করে tmux new-session -s name, আমি নিম্নলিখিত ফলাফলটি পাই:

সেশনগুলি যত্ন সহকারে নেস্ট করা উচিত, জোর করার জন্য set TMUX আনসেট করুন

আমি আসলে নেস্ট সেশনগুলি করতে চাই না, আমার লক্ষ্যটি অন্য একটি পৃথক অধিবেশন তৈরি করা এবং এটি কোনও টিএমউक्स সেশনের মধ্যে থেকে স্যুইচ করা

এটা কি সম্ভব?


2
ব্যবহারকারীদের এই প্রশ্নটি খুঁজে পাওয়ার জন্য একটি দুর্দান্ত সংস্থান: leanpub.com/the-tao-of-tmux/read
0xSheepdog

উত্তর:


142

দ্রুততম উপায় (ধরে নিলে আপনি ctrl-bআপনার কমান্ড উপসর্গ হিসাবে ব্যবহার করেছেন):

ctrl-b :new

একটি নতুন অধিবেশন তৈরি করতে, তারপর

ctrl-b s

ইন্টারেক্টিভভাবে নির্বাচন করুন এবং সেশনে সংযুক্ত করতে।


5
সমাধানের জন্য +1 যা "সেশনগুলি যত্ন সহকারে বাসা বাঁধতে হবে, জোর করে $ টিএমইউএক্স আনসেট করা উচিত"
মার্সিন রোগাকি

3
এবং তারপরে আপনি আপনার অধিবেশনটির নাম পরিবর্তন করতে পারেন:ctrl-b $
nha

21
এবং Ctrl-b :new -s <name>নতুন অধিবেশন একটি নাম দিতে।
আইন তোহভরি

32

কীভাবে স্ক্রিপ্ট তৈরি করবেন

এই স্ক্রিপ্টটি একটি সেশন বিদ্যমান কিনা তা পরীক্ষা করবে। সেশনটি উপস্থিত না থাকলে নতুন সেশন তৈরি করুন এবং এটিতে সংযুক্ত করুন। সেশনের অস্তিত্ব না থাকলে কিছুই ঘটে না এবং আমরা সেই সেশনে সংযুক্ত হই। প্রকল্পের নামের সাথে `~ / বিকাশ 'প্রতিস্থাপন নির্দ্বিধায়।

$ touch ~/development && chmod +x ~/development

# ~/development

tmux has-session -t development
if [ $? != 0 ]
then
  tmux new-session -s development
fi
tmux attach -t development  

টার্মিনাল থেকে নতুন অধিবেশন

আসুন দুটি বিচ্ছিন্ন সেশন তৈরি করুন, সেগুলি তালিকাভুক্ত করুন, একটিতে সংযুক্ত করুন এবং তারপরে tmux চক্রের মধ্যে থেকে সেশনের মাধ্যমে।

tmux new -s name -dtmux এর ভিতর থেকে কাজ করে কারণ আমরা একটি নতুন বিচ্ছিন্ন সেশন তৈরি করছি। অন্যথায় আপনি একটি নেস্টিং ত্রুটি পাবেন।

$ tmux new -s development -d
$ tmux new -s foo -d
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
$ tmux attach -t
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]

Tmux এর মধ্যে থেকে নতুন অধিবেশন

আমরা এখন আমাদের লক্ষ্য সেশনের সাথে সংযুক্ত হিসাবে ভিতরে বা আরও বেশি পরিচিত । যদি আমরা সংযুক্ত থাকাকালীন কোনও নতুন অধিবেশন তৈরি করার চেষ্টা করি তবে এর ফলে বাসা বাঁধার ত্রুটি হবে।

$ tmux new -s bar
> sessions should be nested with care, unset $TMUX to force

এটি সমাধানের জন্য আমরা একটি নতুন বিচ্ছিন্ন সেশন তৈরি করি। যেমন,

$ tmux new -s bar -d
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
> bar: 1 windows (created Wed Jan 13 17:19:35 2016) [204x54]

চক্র (স্যুইচ) সেশনস

  • Prefix ( পূর্ববর্তী অধিবেশন
  • Prefix ) পরের অধিবেশন

নোট: Prefix হয় Ctrl-bডিফল্টরূপে। আপনি ম্যাক ওএসএক্স-এ বাঁধতে Prefixপারেন Ctrl-aএবং ক্যাপস লকটি সিটিআরএল এ পরিবর্তন করতে পারেনsystem preferences > keyboard > modifier keys

Tmux এর অভ্যন্তরে কমান্ড মোড ব্যবহার করে একটি সেশনে সংযুক্ত করুন

কোনও অধিবেশন ছাড়াই কোনও অধিবেশন সংযুক্ত করার চেষ্টা করার ফলে একটি ত্রুটি হবে।

$ tmux attach -t development
> sessions should be nested with care, unset $TMUX to force

পরিবর্তে কমান্ড মোড ব্যবহার করুন Prefix :তারপর টাইপ করুন attach -t session_nameএবং এন্টার চাপুন।


খুব সম্পূর্ণ উত্তরের জন্য ধন্যবাদ, এটি একবারে আমার কয়েকটি প্রশ্নের উত্তর দিয়েছে!
mdekkers

24

এটি আমার জন্য কাজ করে:

TMUX= tmux new-session -d -s name
tmux switch-client -t name

TMUX=প্রথম লাইন প্রয়োজন নেই তাই tmux একটি নিক্ষেপ না sessions should be nested with care, unset $TMUX to forceবার্তা।


1
প্রথম লাইনটি এতে পরিবর্তন করার পরে আমার স্ক্রিপ্টে দুর্দান্ত কাজ করে:TMUX=`tmux new-session -d -s name`
মাইকেল রবিনসন

17

আপনার টার্মিনালের মধ্যে যে সমস্ত কমান্ড আপনি চালু করতে পারবেন তার মধ্যে ট্রিগার কী (যেমন :) টিপুন এবং তারপরে শুরুর অংশটি ছাড়াই কমান্ডটি চাপতে tmux new -s sessionNameপারে fromtmuxctrl-b:tmux

ফলস্বরূপ, ctrl-b :অনুসরণ করেnew -s sessionName আপনি যা চান ঠিক তা করবে এবং আপনার সেশনে একটি নাম দেবে। এটি নতুন সেশনে স্বয়ংক্রিয়ভাবে স্যুইচ করে।



7

ব্যবহারকারী 2354696 এর পরামর্শে আমি একটি নতুন সেশন তৈরি করতে বা বিদ্যমান সেশনটির "ক্লোন" তৈরি করতে নিম্নলিখিত কী বাইন্ডিংগুলি ব্যবহার করি

বাইন্ড-কী এন রান-শেল 'TMUX = tmux new-session -d \; সুইচ ক্লায়েন্ট -n '
বাইন্ড-কী সি রান-শেল 'টিএমইউक्स = tmux নতুন সেশন -t $ (tmux প্রদর্শন-বার্তা -p # এস) -s \ (tmux প্রদর্শন-বার্তা -p # এস-ক্লোন) -ড \; সুইচ-ক্লায়েন্ট -n \; প্রদর্শন-বার্তা "সেশন # এস ক্লোন" "
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.