เปิด terminal gnome ที่มีหลายแท็บและดำเนินการคำสั่งเล็กน้อยในทุกแท็บ


12

นี่คือสิ่งที่ฉันต้องการบรรลุ:

  1. ฉันต้องการเปิด terminal gnome ที่มีห้าแท็บอยู่ในนั้น
  2. ฉันต้องการเรียกใช้ชุดคำสั่ง (5 - 10 คำสั่ง) ในแต่ละแท็บโดยอัตโนมัติแท็บ
    แรก: จะตั้งค่ามุมมองที่ชัดเจนกรณีและหลังจากนั้นดำเนินการอย่างน้อยหนึ่งคำสั่ง
    แท็บที่สอง: จะเข้าสู่เซิร์ฟเวอร์และดำเนินการคำสั่งบาง
    แท็บที่สาม: จะดำเนินการคำสั่งบางอย่างเท่านั้น

gnome-terminal --geometry=260x25-0+0 --tab -e "csh -c \"ct setview myViewName; cal\"" –tab --tab --tab (ทำงานได้ดีมีการตั้งค่ามุมมอง แต่ไม่มีคำสั่งดำเนินการหลังจากนั้น)

ฉันได้ลองทำด้วยวิธีนี้แทนและรันในสคริปต์ด้านล่าง:

gnome-terminal --geometry 125x18-0-26 --tab -t "some title" -e /home/ekido/Desktop/MyScripts/myScript

#!/usr/bin/expect
exec gnome-terminal --geometry 125x49-0+81 –tab
spawn ssh usert@server
expect "password"
send "*******\r"
expect "user@server100:~>"
send “some command\r"
expect "user@server100:~>"
send “some command"
interact 

ถ้าฉันลบexec gnome-terminal --geometry 125x49-0+81 –tabแถวออกจากตัวอย่างและเรียกใช้สคริปต์จากไฟล์อื่น ๆ ก็ใช้งานได้ดี - ฉันเข้าสู่เซิร์ฟเวอร์และดำเนินการคำสั่งทั้งหมด ใครช่วยฉันแก้ปัญหานี้ได้บ้าง

ในการเขียนสคริปต์ที่ฉันเรียกใช้สำหรับทุกแท็บไม่ใช่ตัวเลือกเนื่องจากฉันจะมี 5 เทอร์มินัลที่มีแท็บ 5-7 แท็บในแต่ละจุดสุดท้ายและนั่นหมายความว่ามันจะเป็น 25 ถึง 30 สคริปต์ในการเขียน ในปัญหาของฉัน)


ไม่ใช่ว่าฉันเป็นผู้เชี่ยวชาญในเทอร์มินัล GNOME แต่แท็บที่คุณสร้างควรถูกบันทึกไว้ในโปรไฟล์ หลังจากสร้างโปรไฟล์ฉันเชื่อว่าคุณสามารถสคริปต์ได้ ดูจัดการโปรไฟล์ในความช่วยเหลือของ GNOME
eyoung100

คำตอบ:


11

ดูเหมือนว่าจะทำงานกับเครื่องของฉัน:

gnome-terminal --geometry=260x25-0+0 --tab -e "bash -c 'date; read -n1'" --tab -e "bash -c 'echo meow; read -n1' " --tab --tab

โปรดทราบทันทีที่กระบวนการที่ดำเนินการโดย -e ทำงานเสร็จสิ้นกระบวนการจะสิ้นสุดลง ในกรณีนี้โหลด bash รันคำสั่งใด ๆ ที่คุณส่งไปและมีอยู่ทันที ฉันใส่คำสั่งการอ่านเพื่อรออินพุตของผู้ใช้ วิธีนี้แท็บเหล่านั้นจะไม่ปิดจนกว่าคุณจะกดปุ่มเพียงเพื่อให้คุณสามารถดูได้ในตัวอย่างนี้ หากไม่มีพวกเขามันจะดูราวกับว่ามีเพียงสองแท็บที่เปิดอยู่เพราะอีกสองแท็บจะทำงานและปิดเร็วเกินไป


ขอบคุณสำหรับคำตอบ. แน่นอนว่าฉันได้รับเอาต์พุตของคำสั่งเดียว (ในกรณีนี้คือ "วันที่") แต่ฉันต้องการรันคำสั่งหลายคำสั่งสามารถที่จะเอาท์พุทจากนั้นจึงเขียนคำสั่งใหม่ด้วยตนเองในแท็บเดียวกัน
ekido

3

เนื่องจาก bash จบการทำงานหลังจากคำสั่งเสร็จสิ้นคุณสามารถเรียกใช้อินสแตนซ์อื่นของbashหลังจากคำสั่งของคุณเพื่อรับเชลล์แบบโต้ตอบ:

gnome-terminal  --tab -e "bash -c 'ps -ef; bash'" --tab -e "bash -c 'ls; bash'" --tab -e "bash -c 'top -n 1; bash'"

ดูเหมือนว่าถ้าฉันปิดเทอร์มินัลกระบวนการพื้นฐานไม่ปิดโดยอัตโนมัติมีวิธีแก้ไขเช่นนี้ด้วยหรือไม่ ฉันต้องการปิดหน้าต่างทั้งหมดและแท็บทั้งหมดที่มีกระบวนการของพวกเขาควรจะได้รับการฆ่า
Blub

2

บันทึกด้านล่างเป็น script.sh

#!/usr/bin/env bash

me=$(realpath $0)

commands=(
"echo"
"ls -l && echo 'yes'"
"top"
"ps"
)
len=${#commands[@]}

if [ $# -eq 0 ];then
    num=$len
else
    num=$1
fi

n=$((len-num))
command=${commands[$n]}
num=$((num-1))

xdotool key ctrl+shift+t

if [ $num -gt -1 ]; then
    sleep 1; xdotool type --delay 1 --clearmodifiers "$me $num; ${command}"; xdotool key Return;
fi

เพิ่ม script.sh ไปที่ $ PATH จากนั้นเรียกใช้

gnome-terminal -x script.sh

ดูเปิดแท็บใหม่ในบรรทัดคำสั่งคำพังเพยขั้วใช้


ทุกอย่างอื่นล้มเหลวนอกเหนือจากนี้ ตอนนี้ฉันต้องการเปิดแท็บบางแท็บโดยไม่มีคำสั่ง ตัวอย่างเช่นฉันต้องการเปิดสิบแท็บ แต่สามแท็บถ้าพวกเขาสามารถเรียกใช้คำสั่งบางอย่างเช่น htop ..
34911
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.