सूची में प्रत्येक निर्देशिका के लिए एक GNU स्क्रीन टैब कैसे खोलें


2

मैं निम्नलिखित स्क्रिप्ट है - यह एक तरह से काम करता है।

#!/bin/bash  

... define plugins, etc

for plugin in ${plugins[@]};
do 
  screen -t $plugin
done

मैं चाहता हूं कि मैं यह करूं

ओपन ग्नू-स्क्रीन और प्रत्येक प्लगइन के लिए (जो एक निर्देशिका नाम है), टैब के शीर्षक के रूप में प्लगइन के नाम के साथ एक नया टैब शुरू करें।

अब यह क्या करता है

gnu- स्क्रीन खोलता है और स्क्रीन के इंस्टेंस में (सही शीर्षक के साथ) पहला प्लगइन खोलता है, लेकिन कमांड के माध्यम से चालू नहीं रहता है। इसलिए जब मैं पहली स्क्रीन से बाहर निकलता हूं, तो दूसरा प्लगइन स्क्रीन की एक आवृत्ति में खोला जाता है, जब मैं बाहर निकलता हूं, तीसरा खुला होता है, आदि।

जो मुझे याद आ रहा है

मैं सिर्फ इतना कहना चाहूंगा, जैसे कि screen -t $plugin &&, इस बात को चलाओ और फिर अगले को चलाओ। लेकिन मुझे यकीन नहीं है कि लूप के लिए ऐसा कैसे करना है


1
आप स्क्रीन का उपयोग करके अलग करना शुरू कर सकते हैं, -d -mलेकिन यह मौजूदा सत्रों में विंडोज़ को जोड़ने की अनुमति नहीं देता है। आदेश tmuxका उपयोग करके इसका समर्थन करता है new-window
थॉम्स विगर्स

जवाबों:


2
#!/bin/bash

plugins=(Plugin1 Plugin2 Plugin3)

plugin_cmd="#!/bin/bash\necho This is plugin __placeholder__\n"
for plugin in ${plugins[@]};
do
    echo -e ${plugin_cmd/__placeholder__/$plugin} > /tmp/${plugin}.bash
    chmod +x /tmp/${plugin}.bash
    screen -dmS $plugin
    screen -S $plugin -X stuff "/tmp/${plugin}.bash\n"
    screen -d -r -S $plugin
done

Thom Wigger की सलाह लें और tmux पर जाएँ।


tmux पर स्विच करना पड़ा, लेकिन इसने एक उपचार का काम किया। चियर्स
DAX

1

रिवाज क्यों नहीं बनाया गया?

उदाहरण के लिए, यदि आपका प्लगइन्स वाला फ़ोल्डर अक्सर नहीं बदलता है, तो इसे एक फ़ाइल पर लिखें।

# Setting custom things:
startup_message off   

# starting a few shells with a preselected title
screen -t plugin1 0
screen -t plugin2 1
screen -t plugin3 2
screen -t my_email  -a -l exec elm  


यदि प्लगइन की संख्या बार-बार बदलती है तो आप उन्हें फ़ाइल में लिखने के लिए अपनी बैश स्क्रिप्ट का उपयोग कर सकते हैं। उदाहरण के लिए

rm ~/my_custom_screenrc
echo "# Setting custom things:" > ~/my_custom_screenrc
echo "startup_message off"      >> ~/my_custom_screenrc

आपकी बैश स्क्रिप्ट द्वारा अनुसरण किया जाता है जहां आप बदलते हैं

for plugin in ${plugins[@]};
do 
  screen -t $plugin
done

>>ऊपर के रूप में एक ही फ़ाइल में संलग्न करने के लिए एक प्रतिध्वनि के साथ ।

अंत में स्क्रीन शुरू करें। उदाहरण के लिएscreen -c ~/my_custom_screenrc


यह एक सही जवाब से दूर है और मुझे सप्ताह के भीतर इतने उचित जवाब की उम्मीद है । लेकिन मैंने इसे टिप्पणी के रूप में पोस्ट करने का कोई तरीका नहीं देखा और फिर भी इसे समझने के लिए पर्याप्त मार्कअप रखा।


मुझे लगता है कि यह विजेता हो सकता है शुरू कर रहा हूँ;)
dax

जॉन श्मिट की एनवी पोस्ट एक अच्छी लगती है। Tmux पर भी +1। (या स्क्रीन से स्रोत कोड को देखने वाले लोगों से -1000)।
हेन्नेस

वैसे भी, मुझे लगता है कि आपका समाधान बुरा नहीं है। धन्यवाद!
डेक्स

0

तुम्हें कोशिश करनी चाहिए:

screen -t $plugin xterm &

अपने संस्करण के बजाय। स्क्रीन एक नया खोल खोलती है, जिसके अंदर आप फंस जाएंगे, बिना किसी संभावना के बिना लूप जारी रखने के लिए ; इस प्रकार एम्परसेंड सुनिश्चित करता है कि नियंत्रण तुरंत लूप में लौटा दिया जाता है , जबकि xterm (या konsole, या जो कुछ भी आपको पसंद है) एक जगह देता है, इसलिए बोलने के लिए, जहां स्क्रीन अपना काम कर रही है।


चार प्लगइन्स के मामले में, स्क्रिप्ट को बदलते हुए आप प्रिंट का सुझाव देते हैं 'एक टर्मिनल से जुड़ा होना चाहिए।' चार बार और बाहर निकलता है।
dax

05/02/06 के रूप में स्क्रीन 4.01.00devel का उपयोग करके डेबियन व्हीज़ी पर यह करने की कोशिश की और यह काम किया। क्या आप कृपया कुछ और जानकारी दे सकते हैं: क्या आप पहले से ही चल रहे हैं screen? क्या आप अपनी स्क्रिप्ट को दूरस्थ रूप से शुरू करते हैं sshया cronनौकरी के रूप में अलग करते हैं? क्या OS नीचे चल रहा है?
ua2b

क्या आप मुझसे बात कर रहे हैं? यदि ऐसा है: मैं आर्क लिनक्स / डेबियन जेसी / कुबंटू का उपयोग करता हूं, तो मैं स्क्रिप्ट को सिस्टम बूट स्क्रिप्ट और ssh के माध्यम से शुरू करता हूं। मेरे पास स्क्रीन पहले से चल रही है या नहीं। कुबंटु पर (सिस्टम से लिख रहा हूं) मेरे पास स्क्रीन है 4.1.0 ~ 20120320gitdb59704-9
MariusMatutiae

@ ua2b मेरे लिए - मैं आर्क 3.17.2 पर स्क्रीन 4.3.30 (1) का उपयोग कर रहा हूं। स्क्रीन नहीं चल रही है, मैं स्क्रिप्ट को सामान्य रूप से कमांड लाइन से शुरू कर रहा हूं - ssh या डिटैच के माध्यम से दूरस्थ रूप से नहीं। मैं सूक्ति-टर्मिनल का उपयोग कर रहा हूं।
dax
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.