जवाबों:
आप एक छोटा शेल स्क्रिप्ट लिख सकते हैं जो आवश्यक कार्यक्रमों के साथ 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 \;
क्या वो। Basicaly के साथ अपने तरीके से जानने 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 पर भेजता है, जिससे कमांड को 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
इससे 2 खिड़कियां खुलेंगी, जिनमें से दूसरे को फू / बार नाम दिया जाएगा और बार के ऊपर चलने वाले फू के साथ आधे (50%) में लंबवत रूप से विभाजित किया जाएगा। फोकस विंडो 2 (फू / बार), टॉप पेन (फू) में होगा।
फिर आप अपना पसंदीदा tmux सेशन शुरू कर सकते हैं (इस मामले में, session1) PrefixShifts
Prefix Shift S
लिए tmux में होना चाहिए और अपनी फ़ाइल को सोर्स करने के लिए एक नया सत्र शुरू करने की कोशिश करता है जो tmux को पसंद नहीं है और जब तक आप इसे करने के लिए मजबूर नहीं करेंगे।
Tmuxinator का उपयोग करें - यह आपको कई सत्रों को कॉन्फ़िगर करने की अनुमति देता है, और आप यह चुन सकते हैं कि किसी भी समय कौन सा लॉन्च किया जाए। आप विशेष विंडो या पैन में कमांड लॉन्च कर सकते हैं और खिड़कियों को शीर्षक दे सकते हैं। यहाँ Django अनुप्रयोगों के विकास के साथ एक उदाहरण का उपयोग किया जाता है ।
नमूना विन्यास फाइल:
# ~/.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
? मुझे वह आदेश कहीं भी नहीं मिल रहा है। ~ ऐसा लग रहा है कि यह है new-window
, हालांकि मैं यह नहीं समझ सकता कि आप लंबे और छोटे दोनों रूपों का उपयोग क्यों करते हैं।
पहले मेरे पास @jasonwryan से अप्रोच था लेकिन अगर आपके पास अधिक है तो 2 कॉन्फिग , यह भ्रमित कर सकता है।
इसलिए मैंने एक उपनाम समारोह बनाया:
tmx () {
tmux "$2" source-file "$HOME/.tmux/$1.conf";
}
में ~/.tmux/
मैं कई उपयोगों के लिए कई सत्रों की है। उदाहरण के लिए मैं अलग-अलग कंपनियों के लिए काम करता हूं जिनके पास एक-दूसरे का देव वातावरण है। तो ऊपर दिए गए अन्य फ़ंक्शन के साथ मैं बस कॉल कर सकता हूं: tmx company1
और मुझे जिस कॉन्फ़िगरेशन की आवश्यकता है उसे लोड करें।
अद्यतन:tmux
कमांड के बाद "$ 2" का उद्देश्य है, कि आप अतिरिक्त tmux args पास करने में सक्षम हैं।
no server running on /tmp/tmux-1000/default
) के लिए tmux सत्र नहीं है । इसलिए मुझे इसके साथ कमांड पैच करने की आवश्यकता थी tmux new-session
। रेफ github.com/fatso83/dotfiles/commit/…
मेरी "get.all" स्क्रिप्ट से, जिसे मैं प्रत्येक सुबह बाद में "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
यदि आप स्क्रीन को 2 पैन पर विभाजित करना चाहते हैं (क्षैतिज रूप से कहें), तो आप इस कमांड को चला सकते हैं (आवश्यक कोई टमक्स या शेल स्क्रिप्ट नहीं):
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 plugin है।
की जाँच करें tmux-जीवित
सिस्टम पुनरारंभ होने के बाद tmux वातावरण को पुनर्स्थापित करें।
Tmux बहुत बढ़िया है, सिवाय इसके जब आपको कंप्यूटर को पुनरारंभ करना हो। आप सभी चल रहे प्रोग्राम, वर्किंग डाइरेक्टरीज़, पेन लेआउट आदि को खो देते हैं। वहाँ पर सहायक प्रबंधन उपकरण होते हैं, लेकिन उन्हें आपके कॉन्फ़िगरेशन विकसित होने या नए प्रोजेक्ट शुरू करने के लिए प्रारंभिक कॉन्फ़िगरेशन और निरंतर अपडेट की आवश्यकता होती है।
tmux-resurrect आपके tmux वातावरण से सभी छोटी-छोटी जानकारियों को बचाता है ताकि सिस्टम रीस्टार्ट (या जब आपको ऐसा लगे) के बाद इसे पूरी तरह से बहाल किया जा सके। कोई कॉन्फ़िगरेशन की आवश्यकता है। आपको ऐसा महसूस होना चाहिए कि आपने कभी tmux नहीं छोड़ा है।
या tmux- सातत्य
विशेषताएं:
- tmux पर्यावरण की निरंतर बचत
- कंप्यूटर / सर्वर चालू होने पर स्वचालित tmux शुरू होता है
- tmux शुरू होने पर स्वचालित पुनर्स्थापना
आपको इसे अपनी tmux config फाइल में निर्दिष्ट करना चाहिए ( ~/.tmux.conf
), उदाहरण के लिए:
new mocp
neww mutt
new -d
neww
neww
(पहले सत्र में 2 विंडो के साथ एक सत्र खोलता है और दूसरे में उत्परिवर्तित म्यूट, और 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-resurrect प्लगइन का उपयोग कर सकते हैं । tmux-resurrect को tmux-Continum चलाने की भी आवश्यकता है
tmux-resurrect आपके tmux वातावरण से सभी छोटी-छोटी जानकारियों को बचाता है ताकि सिस्टम रीस्टार्ट (या जब आपको ऐसा लगे) के बाद इसे पूरी तरह से बहाल किया जा सके। कोई कॉन्फ़िगरेशन की आवश्यकता है। आपको ऐसा महसूस होना चाहिए कि आपने कभी tmux नहीं छोड़ा है।
नया सत्र बनने पर कमांड निष्पादित करने के लिए आप tmux हुक का उपयोग कर सकते हैं । विशेष रूप से, यह session-created
हुक का उपयोग करके प्राप्त किया जाता है ।
उदाहरण के लिए, स्क्रीन को तीन तरीकों से विभाजित करने के लिए नीचे दायीं ओर चल रहे htop के साथ आप अपनी ~/.tmux.conf
फ़ाइल में निम्न पंक्ति जोड़ सकते हैं :
set-hook -g session-created 'split -h ; split -v top'
इस पद्धति का लाभ यह है कि आपको वांछित परिणाम प्राप्त करने के लिए किसी भी विशेष तरीके (यानी, शेल स्क्रिप्ट या उपनाम) में tmux को चलाने की आवश्यकता नहीं है। आप इसे इस अन्य उत्तरtmux new-session -A -s mysession
में वर्णित के साथ भी जोड़ सकते हैं जैसे हुक कमांड केवल तभी चलते हैं जब आप पहली बार सत्र बनाते हैं और बाद के अनुलग्नकों पर नहीं।
इस सुविधा को d15d54c2c द्वारा 2016 में वापस जोड़ा गया था । इसे शामिल करने वाली पहली रिलीज़ 2.4 है।
मैंने इस पृष्ठ पर सभी विचारों का उपयोग करने की कोशिश की और मुझे उनमें से कोई पसंद नहीं आया। मुझे बस एक समाधान चाहिए था जो कि मेरे टर्मिनल के खुलने पर खिड़कियों के एक विशिष्ट सेट के साथ शुरू हुआ। मैं यह भी चाहता था कि यह एक आदर्श हो, यानी एक नई टर्मिनल विंडो खोलने से पिछले एक सत्र से 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\")'"