कई टैब के साथ टर्मिनल खोलें और एप्लिकेशन निष्पादित करें


16

मैं लिनेक्स शेल स्क्रिप्टिंग में नया हूं। मैं एक शेल स्क्रिप्ट लिखना चाहता हूं, जो कई टैब के साथ टर्मिनल खोलेगा; यह प्रत्येक टैब में rtsp क्लाइंट ऐप चलाना चाहिए।

इसके लिए, मैं इस मंच में यहाँ प्रश्न के माध्यम से गया और bellow की तरह कोड करने की कोशिश की,

tab="--tab-with-profile=Default -e "
cmd="java RunRTSPClient"
for i in 1 2 3 4 5
   do
#   
   foo="$foo $tab $cmd"         
   done
gnome-terminal $foo
exit 0

यह चल रहा है और टैब के साथ टर्मिनल विंडो खोलता है लेकिन अचानक यह बंद हो जाएगा। मुझे कोई त्रुटि नहीं मिल रही है।

जवाबों:


13

स्क्रिप्ट के इस प्रकार का उपयोग करें जो आप चाहते हैं:

#!/bin/bash

tab="--tab-with-profile=Default"
cmd="bash -c 'java RunRTSPClient';bash"
foo=""

for i in 1 2 3 4 5; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

आम तौर पर, इस तरह से एक स्क्रिप्ट:

#!/bin/bash

tab="--tab"
cmd="bash -c '<command-line_or_script>';bash"
foo=""

for i in 1 2 ... n; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

<command-line_or_script>प्रत्येक टैब में एन टैब को निष्पादित करने के साथ एक नया टर्मिनल खोलेगा । यह बहुत उपयोगी हो सकता है जब आप उदाहरण के लिए किसी विशिष्ट पथ पर दुभाषिया के साथ कुछ टैब के साथ एक टर्मिनल खोलना चाहते हैं ( cd /pathउपरोक्त स्क्रिप्ट में उपयोग करके )।

इसके अलावा, पढ़ा man bash, इस पोस्ट और इस पोस्ट के परिवर्तन को समझने के लिए।

मैंने इन लिपियों का परीक्षण किया है और वे काम करती हैं।


जैसा कि मैंने बताया कि यह केवल प्रदर्शित करता है और बंद हो जाता है और कोई त्रुटि भी नहीं मिलती है। कैसे इस मुद्दे को ठीक करने के लिए ?.
user172001

ठीक है अब इसके टैब के साथ विंडोज़ दिखा रहा है लेकिन किसी भी टैब में ऐप नहीं चला रहा है। और मुझे भी थोड़ा समझाएं, कि इसने विंडो डिस्प्ले इश्यू कैसे तय किया है।
user172001

@ user172001 अब यह काम कर रहा है, नए संपादन देखें!
रादु राईडेनु

यह बहुत अच्छा है। +1
निशांत

1
मैंने cmd1 && cmd2कई कमांड चलाने के लिए कमांड स्ट्रिंग में जोड़ने की कोशिश की । यह केवल पहले एक को चलाने के लिए लगता है। क्या मैं कुछ गलत तरीके से कर रहा हूँ?
बक्सर

7

मैं अपने जवाब के साथ आया था। मुझे लगता है कि यह एक बेहतर तरीका है क्योंकि:

  1. मैं इसे समझ सकता हूं। मैं नहीं एक बैश विशेषज्ञ और कोई स्पष्टीकरण नहीं है क्या के लिए और अधिक लोकप्रिय जवाब में दिया गया था कर रहा हूँ ..., ${}, -e, या@
  2. यह आपको प्रत्येक टैब के लिए शीर्षक और कमांड को आसानी से अनुकूलित करने की अनुमति देता है
  3. क्या मैंने कहा कि यह समझना बहुत आसान है?

ध्यान दें कि ; $SHELLप्रत्येक सूक्ति-टर्मिनल कमांड के अंत में वह है जो टर्मिनल विंडो को खुला रखता है। अन्यथा यह तुरंत बंद हो जाएगा।

title1="tab 1"
title2="tab 2"
title3="tab 3"

cmd1="cd /etc"
cmd2="cd ~/Documents"
cmd3="cd /usr/local"

gnome-terminal --tab --title="$title1" --command="bash -c '$cmd1; $SHELL'" \
               --tab --title="$title2" --command="bash -c '$cmd2; $SHELL'" \
               --tab --title="$title3" --command="bash -c '$cmd3; $SHELL'" 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.