উত্তর:
আপনি একটি ছোট শেল স্ক্রিপ্ট লিখতে পারেন যা প্রয়োজনীয় প্রোগ্রামগুলির সাথে tmux চালু করে। আমার শেল স্ক্রিপ্টে নিম্নলিখিত রয়েছে যা আমি ডেভ-টিএমাক্স বলি। একটি দেব পরিবেশ:
#!/bin/sh
tmux new-session -d 'vim'
tmux split-window -v 'ipython'
tmux split-window -h
tmux new-window 'mutt'
tmux -2 attach-session -d
তাই প্রতিবার আমি আমার প্রিয় দেব পরিবেশটি চালু করতে চাই যা আমি করতে পারি
$ dev-tmux
vim
ওখানে উইন্ডোটির প্রথম (এবং কেবলমাত্র তখন) বাক্সে কার্যকর হওয়া কমান্ডটি বোঝায়। আপনি যদি পরিবর্তে সেশনটির নাম 'ভিএম' রাখতে চান তবে হ্যাঁ, আপনি ঠিক বলেছেন, আপনি -s
পতাকাটি ব্যবহার করতে পারেন । পুরো বাক্য গঠন: tmux new-session -d -s SessionName -n WindowName Command
আমি পেনগুলির একটি জটিল গ্রিড তৈরি করার চেষ্টা করছিলাম এবং বার বার প্যানগুলি স্যুইচিং এবং বিভক্ত করার সাথে মোকাবিলা করতে হয়েছিল। আমার শিক্ষাগুলি এখানে:
tmux new-session \;
আপনাকে একটি নতুন অধিবেশন দিয়ে শুরু করুন। এটি অনুভূমিক বা উল্লম্ব ব্যবহার split-window -h
বা -v
পরবর্তীকালে বিভক্ত করতে যেমন:
tmux new-session \; split-window -v \; split-window -h \;
এই জাতীয় 3 টি ফলক তৈরি করে:
------------
| |
|----------|
| | |
------------
সেই প্যানে কমান্ড চালাতে, কেবল send-keys 'my-command'
কমান্ডটি দিয়ে যুক্ত করুন এবং C-m
এটি কার্যকর করে:
tmux new-session \; \
send-keys 'tail -f /var/log/monitor.log' C-m \; \
split-window -v \; \
split-window -h \; \
send-keys 'top' C-m \;
এবং ফলস্বরূপ সেশনটি দেখতে হবে।
------------
| tail |
|----------|
| | top |
------------
এখন আমি নীচে বাম ফলকটি আবার উপ-বিভক্ত করার চেষ্টা করেছি, সুতরাং আরম্ভ করে তৈরি করা ফলকের সংখ্যাটি কোথায় রয়েছে তা ব্যবহার করে পিছনে ব্যবহার করে last-pane
বা আরও জটিল উইন্ডোগুলিতে স্যুইচ করে চলেছি ।select-pane -t 1
1
0
tmux new-session \; \
send-keys 'tail -f /var/log/monitor.log' C-m \; \
split-window -v \; \
split-window -h \; \
send-keys 'top' C-m \; \
select-pane -t 1 \; \
split-window -v \; \
send-keys 'weechat' C-m \;
তা করে। বেসিক্যালি আপনার চারপাশের উপায় জেনে split-window
এবং select-pane
আপনার যা প্রয়োজন তা হল। -p 75
ফলকের split-window
আকারের উপর আরও নিয়ন্ত্রণ রাখতে প্যানেলের শতকরা আকারের আকারটি পাস করাও সহজ ।
tmux new-session \; \
send-keys 'tail -f /var/log/monitor.log' C-m \; \
split-window -v -p 75 \; \
split-window -h -p 30 \; \
send-keys 'top' C-m \; \
select-pane -t 1 \; \
split-window -v \; \
send-keys 'weechat' C-m \;
যার মতো দেখতে সেশনের ফলাফল
------------------
| tail |
|----------------|
| | top |
|----------| |
| weechat | |
------------------
আশা করি যা tmux
ভবিষ্যতে উত্সাহীদের সহায়তা করে ।
-h -p 30
উপলব্ধ উচ্চতার 30% সহ একটি অনুভূমিক প্যানেল তৈরি করে; -v -p 75
75% প্রস্থ সহ উল্লম্ব জন্য একই।
\:
? আমি স্ক্রিপ্টগুলি এর সাথে এবং ছাড়াও কাজ করতে দেখেছি।
\;
সেমিকালনকে ব্যাশের পরিবর্তে টিএমউক্সে পাস করে, কমান্ডগুলি tmux- এ একটি কল দিয়ে প্রেরণ করা যায়। stackoverflow.com/questions/20913198/…
আপনি নিজের .tmux.conf
পছন্দ থেকে বিভিন্ন সেশন উত্স করতে পারেন:
# initialize sessions
bind S source-file ~/.tmux/session1
bind s source-file ~/.tmux/session2
এবং তারপরে আপনার প্রয়োজনীয় সেশনগুলি বিন্যাস করুন:
#session1
new -s SessionName -n WindowName Command
neww -n foo/bar foo
splitw -v -p 50 -t 0 bar
selectw -t 1
selectp -t 0
এটি দুটি উইন্ডো খুলবে, যার দ্বিতীয়টির নাম হবে ফু / বার এবং এর উপরে উল্লম্বভাবে অর্ধেক (50%) বিভক্ত হবে বারের উপর দিয়ে চলমান। ফোকাসটি উইন্ডো 2 (ফু / বার), শীর্ষ ফলক (ফু) এ থাকবে।
তারপরে আপনি আপনার পছন্দসই টিএমউक्स সেশনটি (এই ক্ষেত্রে সেশন 1) দিয়ে শুরু করতে পারেন PrefixShifts
Prefix Shift S
আমার টিএমউক্সে থাকা এবং আপনার ফাইলটি স্যোসিং করা একটি নতুন সেশন শুরু করার চেষ্টা করে যা টিএমউক্স পছন্দ করে না এবং না করলে আপনি তা জোর না করে না করেন।
Tmuxinator ব্যবহার করুন - এটি আপনাকে একাধিক সেশনগুলি কনফিগার করার অনুমতি দেয় এবং আপনি যে কোনও সময় কোনটি চালু করবেন তা চয়ন করতে পারেন। আপনি নির্দিষ্ট উইন্ডো বা প্যানে কমান্ড চালু করতে এবং উইন্ডোগুলিকে শিরোনাম দিতে পারেন। জ্যাঙ্গো অ্যাপ্লিকেশনগুলি বিকাশের সাথে এখানে ব্যবহারের একটি উদাহরণ ।
নমুনা কনফিগারেশন ফাইল:
# ~/.tmuxinator/project_name.yml
# you can make as many tabs as you wish...
project_name: Tmuxinator
project_root: ~/code/rails_project
socket_name: foo # Not needed. Remove to use default socket
rvm: 1.9.2@rails_project
pre: sudo /etc/rc.d/mysqld start
tabs:
- editor:
layout: main-vertical
panes:
- vim
- #empty, will just run plain bash
- top
- shell: git pull
- database: rails db
- server: rails s
- logs: tail -f logs/development.log
- console: rails c
- capistrano:
- server: ssh me@myhost
সম্পূর্ণ ব্যাখ্যার জন্য উপরের লিঙ্কে README দেখুন।
@ https://github.com/remiprev/teamocil দেখুন
আপনি YAML ব্যবহার করে আপনার কাঠামো নির্দিষ্ট করতে পারেন
windows:
- name: sample-window
splits:
- cmd: vim
- cmd:
- ipython
width: 50
- cmd:
height: 25
:~$ tmux new-session "tmux source-file ~/session1"
neww
split-window -v 'ipython'
split-window -h
new-window 'mutt'
:~$ echo `alias tmux_s1='tmux new-session "tmux source-file ~/session1"'` >>~/.bashrc
:~$ . ~/.bashrc
:~$ tmux_s1
neww
? আমি এই আদেশটি কোথাও খুঁজে পাচ্ছি না ~ is দেখে মনে হচ্ছে এটি হ'ল new-window
, যদিও আপনি দীর্ঘ এবং সংক্ষিপ্ত ফর্মটি কেন ব্যবহার করছেন তা আমি বুঝতে পারি না।
প্রথমে আমার কাছে @ জেসনওয়ারিয়ান থেকে যোগাযোগ ছিল তবে আপনার যদি আরও ২ টি কনফিগার থাকে তবে এটি বিভ্রান্তিকর হতে পারে।
সুতরাং আমি একটি উপনাম ফাংশন তৈরি করেছি:
tmx () {
tmux "$2" source-file "$HOME/.tmux/$1.conf";
}
ইন ~/.tmux/
আমি অনেক ব্যবহারের জন্য একাধিক সেশন আছে। উদাহরণস্বরূপ আমি বিভিন্ন কোম্পানির জন্য কাজ করি যার একে অপরের দেব পরিবেশ থাকে। উপরের উপন্যাসটির সাথে আমি কেবল কল করতে পারি: tmx company1
এবং আমার প্রয়োজনীয় কনফিগারটি লোড করুন।
আপডেট:tmux
কমান্ডের পরে "$ 2" এর উদ্দেশ্য হ'ল আপনি অতিরিক্ত tmux আরগগুলি পাস করতে সক্ষম হবেন।
no server running on /tmp/tmux-1000/default
) এর জন্য আসলে ফাংশনটি কাজ করে না । এজন্য আমার কমান্ডটি প্যাচ করার দরকার ছিল tmux new-session
। সূত্র github.com/fatso83/dotfiles/commit/...
আমার "গেট.এল" স্ক্রিপ্ট থেকে, যা আমি প্রতিটি সকালে অনুরোধ করি তারপরে "get.XXX" কাজগুলির একটি গুচ্ছ চালানোর জন্য যা আমি ট্র্যাক করি তা রিফ্রেশ করে। তাদের মধ্যে কিছু স্বতঃ-প্রস্থান করছে। গিগা শেষ হওয়ার পরে অন্যদের আরও ইন্টারঅ্যাকশন প্রয়োজন (যেমন ইমাস তৈরি করতে বলার মতো)।
#!/bin/sh
tmux att -t get ||
tmux \
new -s get -n capp \; \
send-keys 'get.capp' C-m \; \
neww -n emacs \; \
send-keys 'get.emacs' C-m \; \
neww -n git \; \
send-keys 'get.git' C-m \; \
neww -n mini \; \
send-keys 'get.mini' C-m \; \
neww -n port \; \
send-keys 'get.port' C-m \; \
neww -n rakudo \; \
send-keys 'get.rakudo' C-m \; \
neww -n neil \; \
send-keys 'get.neil && get.neil2 && exit' C-m \; \
neww -n red \; \
send-keys 'get.red && exit' C-m \; \
neww -n cpan \; \
send-keys 'get.cpan && exit' C-m \; \
selectw -t emacs
আপনি যদি কেবল দুটি প্যানে স্ক্রিনটি বিভক্ত করতে চান (অনুভূমিকভাবে বলুন), আপনি এই কমান্ডটি চালাতে পারেন (কোনও tmux বা শেল স্ক্রিপ্টের প্রয়োজন নেই):
tmux new-session \; split-window -h \;
আপনার পর্দাটি দেখতে এমন হবে:
[ks@localhost ~]$ │[ks@localhost ~]$
│
│
│
│
│
│
│
│
│
│
│
[10] 0:ks@localhost:~* "localhost.localdomain" 19:51 31-янв-16
এবং এইভাবেই আমি এটি করি:
#!/bin/bash
function has-session {
tmux has-session -t name_of_my_session 2>/dev/null
}
if has-session ; then
echo "Session already exists"
else
cd /path/to/my/project
tmux new-session -d -s name_of_my_session 'vim'
tmux split-window -h -p 40 start_web_server
tmux split-window -v
tmux attach-session -d -t name_of_my_session
fi
আমার প্রতিটি প্রকল্পের জন্য আমার একটি ফাইল আছে। এছাড়াও আপনি শখের প্রকল্পগুলির জন্য কিছু কাজের জন্য তাদের গ্রুপ করতে পারেন।
এছাড়াও আপনি এটিকে ~/bin
ফোল্ডারে স্থানান্তর করতে , এটিকে যুক্ত করতে PATH
এবং tmux_my_awesome_project
নাম দিতে পারেন । তারপরে আপনি এটিকে প্রতিটি স্থান থেকে চালাতে সক্ষম হবেন।
ভাই চেষ্টা করুন , এটি একটি প্রকল্প বুটস্ট্র্যাপার।
এটি সাথে যোগাযোগের জন্য সহজ এপিআইএস সরবরাহ করে tmux
।
এটি দেখতে এমন কিছু দেখাচ্ছে:
#!/bin/sh
# @ project_name/tasks/init.sh
structure project_name
window editor
run 'vim'
window terminal
run 'echo happy coding ...'
focus editor
connect project_name
একটি প্রকল্প চালু করার জন্য নিম্নলিখিত কমান্ডটি চালানো দরকার -
bro start <project_name>
নীচে স্ক্রিনকাস্ট চেকআউট করুন, এটি কীভাবে শুরু করবেন bro
এবং এর tmux
এপিআই ব্যবহার করবেন তা দেখায় ।
https://user-images.githubusercontent.com/8296449/50532502-2cf3e400-0b6e-11e9-84af-c5f77a04e5cc.gif
এই জন্য একটি tmux প্লাগইন আছে।
Tmux- পুনরুত্থান পরীক্ষা করে দেখুন
সিস্টেম পুনরায় আরম্ভের পরে tmux পরিবেশ পুনরুদ্ধার করুন।
Tmux দুর্দান্ত, যখন আপনাকে কম্পিউটারটি পুনরায় চালু করতে হবে except আপনি সমস্ত চলমান প্রোগ্রামগুলি, কার্যক্ষম ডিরেক্টরিগুলি, ফলক বিন্যাসগুলি হারাবেন There সেখানে সহায়ক ব্যবস্থাপনার সরঞ্জাম রয়েছে তবে আপনার কার্যপ্রবাহের বিকাশ ঘটে বা আপনি নতুন প্রকল্প শুরু করার সাথে সাথে তাদের প্রাথমিক কনফিগারেশন এবং অবিচ্ছিন্ন আপডেটগুলি প্রয়োজন।
tmux- পুনরুত্থান আপনার tmux এনভায়রনমেন্ট থেকে সমস্ত সামান্য বিশদ সংরক্ষণ করে যাতে এটি সিস্টেম পুনরায় আরম্ভের পরে (বা যখন আপনি এটির মতো অনুভব করেন) পুরোপুরি পুনরুদ্ধার করা যায়। কোন কনফিগারেশন প্রয়োজন। আপনার অনুভব করা উচিত যে আপনি কখনই টেমাক্স ছাড়েন না।
অথবা tmux-Continum
বৈশিষ্ট্য:
- tmux পরিবেশের অবিচ্ছিন্ন সঞ্চয়
- কম্পিউটার / সার্ভার চালু হলে স্বয়ংক্রিয় tmux শুরু
- tmux শুরু হওয়ার পরে স্বয়ংক্রিয়ভাবে পুনরুদ্ধার করুন
আপনার এটি আপনার tmux কনফিগারেশন ফাইলে নির্দিষ্ট করা উচিত ( ~/.tmux.conf
উদাহরণস্বরূপ:
new mocp
neww mutt
new -d
neww
neww
(প্রথমটি এমওসিপি এবং দ্বিতীয়টিতে মুট দিয়ে দুটি উইন্ডোজের সাথে একটি সেশন খোলে এবং 3 টি খালি উইন্ডো সহ একটি পৃথক পৃথক সেশন)।
আমি এই স্ক্রিপ্ট তৈরি করেছি । এটিতে tmuxinator, রুবি বা অন্যের দরকার নেই। এটি কেবল একটি বাশ স্ক্রিপ্ট, কনফিগারযোগ্য:
কনফিগার্ড নামের একটি ফাইলের মধ্যে এমন কিছু থাকা উচিত:
combo=()
combo+=('logs' 'cd /var/log; clear; pwd')
combo+=('home' 'cd ~; clear; pwd')
এবং ব্যাশ কোডটি হওয়া উচিত:
#!/bin/bash
if [ -r config ]; then
echo ""
echo "Loading custom file"
. config
else
. config.dist
fi
tmux start-server
window=0
windownumber=-1
for i in "${combo[@]}"; do
if [ $((window%2)) == 0 ]; then
name=${i}
((windownumber++))
else
command=${i}
fi
if [ ${combo[0]} == "${i}" ]; then
tmux new-session -d -s StarTmux -n "${name}"
else
if [ $((window%2)) == 0 ]; then
tmux new-window -tStarTmux:$windownumber -n "${name}"
fi
fi
if [ $((window%2)) == 1 ]; then
tmux send-keys -tStarTmux:$windownumber "${command}" C-m
fi
((window++))
done
tmux select-window -tStarTmux:0
tmux attach-session -d -tStarTmux
tmux start_server
নিজে থেকেই কোনও সার্ভার শুরু করে না। Github.com/tmux/tmux/issues/182
প্লাগ -ইন tmux-Continum আপনার tmux সেশনটি স্বয়ংক্রিয়ভাবে সংরক্ষণ করবে এবং পরের বার tmux শুরু হওয়ার সাথে সাথে এটি লোড হবে, এখানে কিছু কাস্টম স্ক্রিপ্ট সমাধানের চেয়ে সেটআপ করা সহজ হওয়া উচিত।
বৈশিষ্ট্য:
- tmux পরিবেশের অবিচ্ছিন্ন সঞ্চয়
- কম্পিউটার / সার্ভার চালু হলে স্বয়ংক্রিয় tmux শুরু
- tmux শুরু হওয়ার পরে স্বয়ংক্রিয়ভাবে পুনরুদ্ধার করুন
চাহিদা অনুযায়ী আপনার সেশনটি সংরক্ষণ করতে আপনি tmux- পুনরুত্থান প্লাগইন ব্যবহার করতে পারেন । tmux-পুনরুজ্জীবিত এছাড়াও চালানোর জন্য প্রয়োজন বোধ করা হয় tmux-কন্টিনাম
tmux- পুনরুত্থান আপনার tmux এনভায়রনমেন্ট থেকে সমস্ত সামান্য বিশদ সংরক্ষণ করে যাতে এটি সিস্টেম পুনরায় আরম্ভের পরে (বা যখন আপনি এটির মতো অনুভব করেন) পুরোপুরি পুনরুদ্ধার করা যায়। কোন কনফিগারেশন প্রয়োজন। আপনার অনুভব করা উচিত যে আপনি কখনই টেমাক্স ছাড়েন না।
নতুন সেশন তৈরি হওয়ার সময় আপনি কমান্ডগুলি কার্যকর করতে tmux হুক ব্যবহার করতে পারেন । বিশেষত, এটি session-created
হুক ব্যবহার করে অর্জিত হয় ।
উদাহরণস্বরূপ, নীচে ডানদিকে চলমান এইচটিপি দিয়ে পর্দাটি তিনভাবে বিভক্ত করার জন্য আপনি নিম্নলিখিত ~/.tmux.conf
ফাইলটি আপনার ফাইলে যুক্ত করতে পারেন :
set-hook -g session-created 'split -h ; split -v top'
এই পদ্ধতির সুবিধাটি হ'ল কাঙ্ক্ষিত ফলাফল পেতে আপনাকে কোনও বিশেষ উপায়ে (যেমন শেল স্ক্রিপ্ট বা ওরফে) টিএমউक्स চালাতে হবে না। আপনি এই অন্যান্য উত্তরেtmux new-session -A -s mysession
বর্ণিত সাথে এটিও একত্রিত করতে পারেন যেমন হুক কমান্ডগুলি কেবল তখনই চালিত হয় যখন আপনি প্রথম সেশনটি তৈরি করেন এবং পরবর্তী সংযুক্তিতে নয় on
এই বৈশিষ্ট্যটি d15d54c2c দ্বারা 2016 সালে ফিরে যুক্ত হয়েছিল। এটি অন্তর্ভুক্ত করার জন্য প্রথম প্রকাশটি ২.৪।
আমি এই পৃষ্ঠায় সমস্ত ধারণাগুলি ব্যবহার করার চেষ্টা করেছি এবং সেগুলির কোনও পছন্দ করি না didn't আমি কেবল একটি সমাধান চেয়েছিলাম যা আমার টার্মিনালটি খোলার সাথে সাথে উইন্ডোজের একটি নির্দিষ্ট সেট দিয়ে tmux শুরু হয়েছিল। আমি এটি আদর্শবান হতে চেয়েছিলাম, যেমন একটি নতুন টার্মিনাল উইন্ডো খোলার জন্য এটি পূর্ববর্তীটি থেকে টিএমএক্স সেশনটি গ্রহণ করবে।
উপরের সমাধানগুলি প্রায়শই একাধিক tmux সেশন খোলার প্রবণতা রাখে এবং আমি কেবল একটি চাই। প্রথমত, আমি এটি আমার সাথে যুক্ত করেছি ~/.bash_profile
:
tmux start-server
if [[ -z "$TMUX" ]]
then
exec tmux attach -d -t default
fi
তারপরে আমি আমার সাথে নিম্নলিখিতগুলি যুক্ত করেছি ~/.tmux.conf
:
new -s default -n emacs /usr/local/bin/emacs
neww -n shell /usr/local/bin/bash
neww -n shell /usr/local/bin/bash
selectw -t 1
এখন প্রতিবার আমি যখন টার্মিনাল শুরু করি বা tmux বা যে কোনও কিছু শুরু করি, আমি হয় আমার বিদ্যমান কাঙ্ক্ষিত সেটআপটির (পুনরায় নামকরণ করা অধিবেশন default
) পুনরায় সংযুক্ত হই , বা সেই সেটআপটি দিয়ে একটি নতুন সেশন তৈরি করি।
tmux start_server
নিজে থেকে কোনও সার্ভার শুরু করে না। Github.com/tmux/tmux/issues/182
bash --rcfile
নির্দিষ্ট ডিভলটুলস সংস্করণ সক্ষম হওয়া সহ বৈজ্ঞানিক লিনাক্সের উপর একটি সুন্দর শেল পাওয়ার জন্য এটির সাথে কাজ করার জন্য আমাকে কিছু ভয়ঙ্কর পলায়ন করতে হয়েছিল । যদি কেউ একই কাজ করার চেষ্টা করে তবে এটি এখানে ছেড়ে দেবে।tmux new-window -n "git lg" "scl enable devtoolset-3 'bash --rcfile <(echo \"source \"$HOME/.bashrc\";cd ~/workspace/coolproject/;git lg\")'"