ฉันต้องการเปิดแท็บเทอร์มินัลหลายแท็บตั้งชื่อให้ไปที่ไดเรกทอรีและทำให้แต่ละแท็บเรียกใช้คำสั่ง
ฉันยังใหม่กับ Linux และ shell scripting หลังจากค้นหาออนไลน์และตรวจสอบโซลูชันฉันได้สร้างสคริปต์นี้ ( แก้ไขตามคำตอบด้านล่าง):
#!/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 "\" bash -c $ {cmds [i]}; bash \ "") ออกจากคำสั่งมันจะเปิดแท็บในไดเรกทอรีที่กำหนดและตั้งชื่อโดยไม่มีข้อผิดพลาด
-Edit-1:
หลังจากใช้คำตอบ @Tuknutx ด้านล่างและแก้ไขสคริปต์แล้วข้อผิดพลาดจะไม่ปรากฏอีกต่อไป แต่ให้ฉันbash: rails c: command not found
และrails s
สร้างแอพ Rails ใหม่แทนที่จะเริ่มเซิร์ฟเวอร์ Rails ฉันกำลังใช้. rmvrc เพื่อเลือก gemset เมื่อเข้าถึงโฟลเดอร์นี้ .
cmds[1]="'ping 192.168.9.9'"
มันให้ฉันข้อผิดพลาดเดียวกัน แต่ฉันแก้ไขได้โดยลบใบเสนอราคาเดียว ดังนั้นถ้าฉันเขียนcmds[1]="ping 192.168.9.9"
มันใช้งานได้
tab=" --tab-with-profile=Default"
??