যদি না থাকে তবে কীভাবে নতুন tmux সেশন তৈরি করবেন


144

আমি tmux sessionযদি একটি নামযুক্ত টিএমউक्स সেশনটি উপস্থিত থাকে তবে কীভাবে সংযুক্ত করতে হবে তা নির্ধারণের চেষ্টা করছি , না থাকলে আমি প্রদত্ত নামের সাথে একটি নতুন তৈরি করতে চাই না।

বর্তমানে, আমি কয়েকটি tmuxকমান্ড সম্পর্কে জানি যা আমি যা খুঁজছি তা আংশিকভাবে অর্জন করতে পারে তবে আমি কী সন্ধান করছি তা পেতে কীভাবে এগুলি একত্রিত করা যায় তা পরিষ্কার নয়:

  • tmux attach একটি স্বয়ংক্রিয়ভাবে বিদ্যমান সেশনে সংযুক্ত করে - তবে কোনও সেশন উপস্থিত না থাকলে ত্রুটিগুলি আউট
  • tmux new একটি নতুন অধিবেশন তৈরি করে - তবে এটি প্রতিবার তা করে, তাই আমি এটি আমার কাছে ছেড়ে যেতে পারি না .tmux.conf
  • tmux has-session একটি অধিবেশন রয়েছে কিনা তা পরীক্ষা করে - তবে অন্যান্য কমান্ডের সাথে কীভাবে এটি সেলাই করতে হয় তা আমি জানি না

সুতরাং, আমি একটি টিএমউक्स স্ক্রিপ্ট তৈরি করতে চাই, যাতে এটি স্বয়ংক্রিয়ভাবে ঘটে যায়, প্রতি বারে নিজে নিজে এটি তৈরি করার পরিবর্তে আমাকে একটি সেশনে লগইন করতে হবে।

আমি কীভাবে একটি স্বয়ংক্রিয় স্ক্রিপ্ট লিখতে পারি যাতে একটি নতুন টিএমউक्स সেশন তৈরি করতে (যদি কোনও প্রদত্ত অধিবেশনটির নামটি বিদ্যমান না থাকে) বা একটি সেশনের নামের সাথে সংযুক্ত করতে (এটি উপস্থিত থাকলে)?


15
@ কেজহু: আমি এটিকে
ভিএম

6
কারও আগ্রহের ক্ষেত্রে আমি এই প্রশ্নের জন্য আরও একটি সম্ভাব্য উত্তর লিখেছি: gist.github.com/chakrit/5004006
চકૃત

9
এদিকে, আমার man tmuxবক্তব্য: "-এ পতাকাটি নতুন অধিবেশনটি সংযুক্তি-সেশনের মতো আচরণ করে যদি সেশন-নাম ইতিমধ্যে উপস্থিত থাকে"
পেটর ভিক্টরিন

1
এটি সরাতে পতাকাঙ্কিতকারীদের জন্য, আমার মনে রাখা উচিত যে এমনকি মডারেটররা days০ দিনেরও বেশি পুরানো প্রশ্ন অন্য সাইটে স্থানান্তর করতে পারে না। এই সিস্টেমের সীমাবদ্ধতার কারণগুলি এখানে ব্যাখ্যা করা হয়েছে
ব্র্যাড লারসন

1
@ ব্র্যাডলারসন, বর্তমানে এটি করার সর্বোত্তম / সহজ বিকল্পটির একটি মন্তব্যে উত্তর দেওয়া হয়েছে, নিচে নামার সময়: stackoverflow.com/questions/3432536/… । এখানে আসা বেশিরভাগ ব্যবহারকারীরা এটি আবিষ্কার করতে সক্ষম হবেন না। আপনি সম্ভবত ভোটের সংখ্যা দ্বারা দেখতে পাচ্ছেন এটি স্পষ্টতই একটি খুব গুরুত্বপূর্ণ প্রশ্ন। এই প্রশ্নটি কি খোলা সম্ভব, যাতে আমি এটি উত্তর হিসাবে যুক্ত করতে পারি, যাতে নতুন লোকেরা এটি খুঁজে পেতে পারে?
alpha_989

উত্তর:


89

পর্যায়ক্রমে, আপনি যোগ করতে পারেন

new-session

আপনার .tmux.conf- এটি সার্ভার শুরুতে একটি ডিফল্ট সেশন তৈরি করবে।

তারপরে tmux attachহয় বর্তমান সেশনের সাথে সংযুক্ত হবে (চলমান সার্ভার, যা), বা একটি নতুন সেশন তৈরি করবে (সার্ভারটি শুরু করুন, কনফিগারেশন ফাইলটি পড়ুন, new-sessionকমান্ডটি ইস্যু করুন ) এবং এতে সংযুক্ত হবে।


3
এটি যখন একটি নতুন অধিবেশন তৈরি করে, তখন ডিফল্ট পাথটি আমার হোম ডিরেক্টরি হয়, যে পথ থেকে tmux চালু ছিল not
রিচার্ড হ্যানসেন

2
@ এএবি: আপনার উত্তরটির অর্থ কী?
জর্জেন এ। এয়ারহার্ড

@ রিচার্ডহানসেনের ইস্যুটিকে সমাধান করার কোনও উপায় আছে কি? বর্তমানের পথ থেকে আহ্বান করা সর্বাধিক অর্থবোধ করে বলে মনে হচ্ছে, এবং যদি তা new-sessionধ্বংস করে দেয় তবে এটি মনে হয় এটি একটি আসল সমস্যা।
লি ওল্যাভার

2
আপনি এটি ব্যবহার করার ক্ষেত্রে এটি ( source-file ~/.tmux.conf
টিএমএক্স

11
@ সেবাস্তিয়ান ব্লাস্ক আপনি নিজের সেশনটির নাম দিলে আপনি -Aবিকল্পটি ব্যবহার করতে পারেন new-sessionnew-session -A -s mysessionকনফিগার পুনরায় লোডিংয়ের সাথে দুর্দান্ত খেলবে।
jkoelker

163

আমি এটি বের করেছিলাম ( এবং এটি আমাকে দেখিয়েছিল )।

tmux attach || tmux new

28
এই উত্তরটি আমার জন্য ভাল কাজ করে, কারণ আমি অধিবেশন নাম করতে পারেন: tmux attach-session -t my-session || tmux new-session -s my-session। একমাত্র সমস্যা হ'ল এটি পারমাণবিক নয়। tmux এর ক্রিয়ে-অ্যাট-অ্যাচমেন্ট কমান্ড থাকা উচিত।
অ্যান্ড্রু

5
alias tm='tmux attach || tmux new'
বাশে

10
কারণ একটি ছোট খামচি দিয়ে Upvoting নামে সেশন সঙ্গে এই কাজগুলো করেনঃ tmux attach -t some_name || tmux new -s some_name। কিছু_নাম পরিবর্তন করে $ 1 এ একটি শেবাং যুক্ত করুন এবং সংরক্ষণ করুন।
চিজমিস্টার

10
Tmux এর সাথে অপরিচিত এবং newবনাম সম্পর্কে ভাবছেন তাদের জন্য নোট করুন new-session: এগুলি প্রতিশব্দ, এবং তাই attachএবং attach-session
এস্টেইস

1
tmux new-session -ds default \; split-window -dv 2>/dev/null; tmux attach -t defaultআরও ভাল কাজ করে এবং প্রথম টিমের ক্ষেত্রে দ্বিতীয় tmux খুলবে না /bin/kill। একমাত্র ক্ষতি হ'ল এটির জন্য আপনার সেশনগুলির নাম রাখা দরকার।
টিনো

64

পেটর ভিক্টরিনের মন্তব্যে যেমন উল্লেখ করা হয়েছে ,পেটর জোকোলেকার এবং পিনজিজ- , আপনি নিম্নলিখিত কমান্ডটি mySessionবিদ্যমান থাকলে তা সংযুক্ত করতে এবং এটি না থাকলে এটি তৈরি করতে ব্যবহার করতে পারেন :

 tmux new -A -s mySession

থেকে man tmux:

new-session[-AdDEP] [-cstart-directory] [-Fformat] [-nwindow-name] [-ssession-name] [-tgroup-name] [-xwidth] [-yheight] [shell-command]

(ওরফে new:)

নামের সাথে একটি নতুন সেশন তৈরি করুন session-name

[...]

-Aপতাকা তোলে new-sessionআচরণ মত attach-sessionযদি session-nameআগে থেকেই আছে; এই ক্ষেত্রে, -Dমত আচরণ -dকরেattach-session

new-session-Atmux-1.8 থেকে সমর্থন করেছে


1
আপনি যদি gnome-terminalকমান্ড হিসাবে এটি কোনও কিছুতে ব্যবহার করতে যাচ্ছেন তবে আমি -sনির্দিষ্ট সেশনের নামটি ছেড়ে দেওয়ার পরামর্শ দিচ্ছি যাতে আপনি gnome-terminalএকই সেশনের সাথে সংযুক্ত প্রতিটি নতুন অধিবেশন শেষ না করেন । prefix + sনতুন টার্মিনাল খোলার পরে আপনি সর্বদা একটি বিদ্যমান সেশনটি নির্বাচন করতে পারেন ।
ড্রাগন 788

14

যদিও আমি খুঁজে পেয়েছি যে রায়পুণের উত্তরটি 1 সেশন ব্যবহারের জন্য যথেষ্ট, তবে এই স্ক্রিপ্টটি আপনাকে একাধিক সেশন সেটআপ করতে দেয়:

SESSIONS="work play"

function has-session {
    tmux has-session -t $1 2>/dev/null
}

function except 
{
    if [ "$?" -eq 1 ] ; then
        $1
    fi
}

# Configure your sessions here
function session-work
{
    tmux new-session -d -s work
    tmux neww -k -t work:1
}

function session-play
{
    tmux new-session -d -s play
    tmux neww -k -t play:1
}

#
#MAIN 
for x in $SESSIONS
do
    echo $x
    has-session $x
    except session-$x
done

বিঃদ্রঃ:

-k  --> new-window will not be created if already exists
-d  --> start session or window, but don't attach to it yet
-s  --> name the session
-t  --> specify a target location in the form session:window.pane 

13

প্রারম্ভকালীন সময়ে প্রকল্প ভিত্তিক কনফিগারেশন অন্তর্ভুক্ত করার জন্য অ্যালেক্সের পরামর্শটি মানিয়ে নেওয়া, আমি নিম্নলিখিতগুলি ব্যবহার শুরু করেছি:

# ~/bin/tmux-myproject shell script
# The Project name is also used as a session name (usually shorter)
PROJECT_NAME="myproject"
PROJECT_DIR="~/myproject"

tmux has-session -t $PROJECT_NAME 2>/dev/null
if [ "$?" -eq 1 ] ; then
    echo "No Session found.  Creating and configuring."
    pushd $PROJECT_DIR
    tmux new-session -d -s $PROJECT_NAME
    tmux source-file ~/bin/tmux-${PROJECT_NAME}.conf
    popd
else
    echo "Session found.  Connecting."
fi
tmux attach-session -t $PROJECT_NAME

tmux-myproject.confআমার উইন্ডো এবং পেনগুলি তৈরি করতে, পাশাপাশি আমার সম্পাদকগুলি শুরু করতে tmux কমান্ডের আমার সূচনার সিরিজটি কোথায় ।


8

আমি প্রয়োজনে একটি নতুন সেশন তৈরি করতে একটি উপনাম ব্যবহার করি এবং এটি যদি ইতিমধ্যে উপস্থিত থাকে তবে আমার ডিফল্ট সেশনে সংযুক্ত করি:

alias tmuxre='tmux new-session -t default || tmux new-session -s default'

আমি এটি আমার সার্ভারে আমার। লগিনে যুক্ত করেছি।

আমি এইভাবে এটি করার কারণটি হ'ল কারণ আমি একই প্রকৃত সেশনে সংযুক্ত করতে চাই না, আমি একটি নতুন অধিবেশন চাই যা একই গ্রুপের উইন্ডো ব্যবহার করে।

এটিও দৌড়ানোর মতোই screen -xRR


2
যদি আপনি প্রায়শই আপনার সেশনে থাকেন এবং বাইরে থাকেন তবে এটি দেখা হিসাবে প্রচুর অব্যবহৃত সেশন ছেড়ে যায় tmux list-sessions
আনম

হ্যাঁ, এটি করে, আমি এখন এবং পরে প্রতিটি সময় তাদের পরিষ্কার করি। আমি যে কার্যকারিতাটি চাই তা পেতে এটি একটি সামান্য ত্রুটি।
মাইকেল

আরে @ ম্যাটিউজ-পিয়োট্রোস্কি - আমি কোনও কোড ব্লকে আমার কোডটি গুটিয়ে রাখতে সম্পাদনাটির সাথে একমত হই তবে কেন আপনি অন্য পাঠ্যকে আমি যা বলেছি তার চেয়ে আলাদা করে সম্পাদনা করবেন? এখানে মন্তব্য করার জন্য দুঃখিত তবে আমি এর কোথাও দেখতে পেলাম না।
মাইকেল

আমি আপনাকে আপত্তি জানাতে চাইনি। আমি শুধু ভেবেছিলাম তুমি করতে পারে চালানো উপনাম মধ্যে কনফিগ ফাইল এবং তাই এটি একটি টাইপো ছিল।
ম্যাটিউজ পিয়োত্রস্কি

3
এখন অবধি, আপনি কেবল টাইপ করতে পারেন: tmux new -A -s defaultএকটি নতুন সেশনটি চালু না থাকলে এটি উপস্থিত না থাকলে বা স্বয়ংক্রিয়ভাবে সংযুক্ত করুন। আমি মনে করি এটি কনফিগার ফাইল সম্পাদনা করার চেয়ে অনেক ভাল।
pjincz

1

যারা একই জিনিস করতে চান তাদের জন্য fish:

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