เปิด Terminal ที่มีหลายแท็บและเรียกใช้แอปพลิเคชัน


16

ฉันใหม่สำหรับการเขียนสคริปต์ linux shell ฉันต้องการเขียนเชลล์สคริปต์ซึ่งจะเปิดเทอร์มินัลที่มีหลายแท็บ มันควรรันแอพไคลเอ็นต์ rtsp ในแต่ละแท็บ

สำหรับสิ่งนี้ฉันได้ผ่านคำถามมาแล้วในฟอรัมนี้และพยายามที่จะเขียนโค้ดอย่างเบลโลว์

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

จะเปิดเทอร์มินัลใหม่โดยมีแท็บ n ตัวที่ทำงาน<command-line_or_script>ในแต่ละแท็บ สิ่งนี้มีประโยชน์มากเมื่อคุณต้องการยกตัวอย่างเช่นเปิดเทอร์มินัลที่มีแท็บบางตัวพร้อมล่ามที่เส้นทางเฉพาะ (ใช้cd /pathในสคริปต์ด้านบน)

นอกจากนี้อ่านman bash, โพสต์นี้และโพสต์นี้จะเข้าใจการเปลี่ยนแปลง

ฉันทดสอบสคริปต์เหล่านี้แล้วและใช้งานได้


เช่นเดียวกับที่ฉันบอกมันเพียงแสดงและปิดและไม่มีข้อผิดพลาดได้รับ จะแก้ไขปัญหานี้ได้อย่างไร?
user172001

ตกลงตอนนี้มันแสดงหน้าต่างที่มีแท็บ แต่ไม่ได้เรียกใช้แอพในแท็บใด ๆ และอธิบายให้ฉันฟังหน่อยว่ามันช่วยแก้ไขปัญหาการแสดงผลหน้าต่างได้อย่างไร
user172001

@ user172001 ตอนนี้ใช้งานได้ให้ตรวจสอบการแก้ไขใหม่!
Radu Rădeanu

นี่มันเท่ห์ดี +1
Nishant

1
ฉันพยายามเพิ่มcmd1 && cmd2ลงในสตริงคำสั่งเพื่อเรียกใช้หลายคำสั่ง ดูเหมือนว่าจะเรียกใช้ครั้งแรกเท่านั้น ฉันกำลังทำอะไรผิดอย่างโจ๋งครึ่ม?
byxor

7

ฉันมากับคำตอบของฉันเอง ฉันคิดว่านี่เป็นวิธีที่ดีกว่าเพราะ:

  1. ฉันสามารถเข้าใจมัน ฉันไม่ได้เป็นผู้เชี่ยวชาญด้านการทุบตีและไม่มีคำอธิบายใดได้รับในคำตอบที่ได้รับความนิยมมากขึ้นสำหรับสิ่งที่เป็น..., ${}, -eหรือ@
  2. ช่วยให้คุณปรับแต่งชื่อและคำสั่งสำหรับแต่ละแท็บได้อย่างง่ายดาย
  3. ฉันว่ามันง่ายกว่าที่จะเข้าใจหรือไม่?

โปรดทราบว่า; $SHELLในตอนท้ายของแต่ละคำสั่ง gnome-terminal คือสิ่งที่ทำให้หน้าต่างเทอร์มินัลเปิดอยู่ มิฉะนั้นจะปิดทันที

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'" 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.