मुझे कई टर्मिनल टैब खोलने की आवश्यकता है, उन्हें शीर्षक दें, एक निर्देशिका पर जाएं, और प्रत्येक टैब को एक कमांड चलाएं।
मैं लिनक्स और शेल पटकथा लेखन के लिए नया हूँ, ऑनलाइन खोज और कुछ समाधान की जाँच के बाद, मैं इस स्क्रिप्ट (बनाया संपादित नीचे दिए गए उत्तर के आधार पर):
#!/bin/bash
cd /media/Extra/Project
tab=" --tab-with-profile=Default"
options=(--tab --title=Terminal)
cmds[1]="'rails s'"
titles[1]="Server"
cmds[2]="'rails c'"
titles[2]="Console"
for i in 1 2; do
options+=($tab --title="${titles[i]}" -e "bash -c \"${cmds[i]} ; bash\"" )
done
gnome-terminal "${options[@]}"
exit 0
यह टैब खोलता है, उन्हें नाम देता है, लेकिन इस त्रुटि को उत्पन्न करने वाले आदेशों को निष्पादित करने में विफल रहता है:
इस टर्मिनल के लिए बच्चे की प्रक्रिया बनाने में एक त्रुटि हुई थी
एक और कमी यह है कि अगर मैंने रनिंग कमांड को रोक दिया तो यह टैब को बंद कर देता है, जो मुझे नहीं चाहिए। मुझे कमांड को रोकने और उसी टैब के भीतर फिर से चलाने में सक्षम होने की आवश्यकता है।
स्क्रिप्ट में क्या गलत है? क्या ऐसा करने का एक और सरल तरीका है?
नोट: यदि मैंने कमांड से एक -e "\" बैश -c $ {cmds [i]}; बैश \ "" भाग को हटा दिया है, तो यह दिए गए डायरेक्टरी में टैब को खोलता है और बिना किसी त्रुटि के उन्हें नाम देता है।
-संपादित-1:
नीचे @Tuknutx उत्तर को लागू करने और स्क्रिप्ट को संपादित करने के बाद, त्रुटि अब दिखाई नहीं देती है, लेकिन यह मुझे देता है bash: rails c: command not found
और rails s
रेल सर्वर शुरू करने के बजाय एक नया रेल एप्लिकेशन बनाता है, मैं इस फ़ोल्डर का उपयोग करने के बाद एक रत्न का चयन करने के लिए .rmvrc का उपयोग कर रहा हूं। ।
cmds[1]="'ping 192.168.9.9'"
वही त्रुटि मिलती है लेकिन मैंने एकल उद्धरण को हटाकर इसे हल कर दिया। इसलिए अगर मैं लिखता हूं तो cmds[1]="ping 192.168.9.9"
यह काम करता है।
tab=" --tab-with-profile=Default"
??