แท็บที่เปิดโดยทางโปรแกรมใน gnome-terminal, รันคำสั่งและเปิด tab ค้างไว้


12

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

บางสิ่งเช่นนี้

gnome-terminal --tab -e "ls -a" --tab -e "ls"

แต่ปัญหานี้คือแท็บปิดทันทีที่คำสั่ง "ls" เสร็จสิ้น ไม่มีใครรู้วิธีทำให้แท็บเปิดอยู่หรือไม่

คำตอบ:


11

Gnome-terminal สามารถใช้คำสั่งหรือเปิดเชลล์ แต่ไม่ใช่ทั้งสองอย่าง

มีวิธีแก้ปัญหาที่ต้องทำทั้งสองอย่างโดยการห่อหุ้มคำสั่งและการเรียกใช้เชลล์ในภายหลังเป็นหนึ่งคำสั่ง

$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""

สำหรับทางเลือกเพิ่มเติมอ่านคำตอบของฉันสำหรับคำถามที่คล้ายกันในการล้นสแต็ก: /programming/3512055/avoid-gnome-terminal-close-after-script-execution/3531426#3531426


10

หากคุณมีxdotoolและwmctrlติดตั้งแล้วเชลล์สคริปต์ต่อไปนี้อาจใช้งานได้:

#!/usr/bin/env bash

window="$(xdotool search --class gnome-terminal | head -1)"
xdotool windowfocus $window
xdotool key ctrl+shift+t
xdotool type "$*"
xdotool key Return

ฉันใช้มันแบบนี้:

$ run-in-new-tab 'ls -l'

ผมพบว่าความคิดนี้ในบล็อก Trustin ลี


ขอบคุณ มันใช้งานได้ดีทีเดียว ฉันต้องเพิ่ม a sleep 1ctrl + shift + t เพื่อให้มันใช้งานได้สำหรับฉัน ฉันจะยอมรับสิ่งนี้หากไม่มีอะไรเกิดขึ้นในเร็ว ๆ นี้

ใช่ - ฉันพบว่าฉันต้องsleep 2ทำให้มันใช้งานได้ 100% วิธีแก้ปัญหาที่ยอดเยี่ยม - ฉันกำลังเปิดแท็บ 8 แท็บซึ่ง ssh ไปยังเซิร์ฟเวอร์ต่าง ๆ เริ่มกระบวนการต่าง ๆ ฯลฯ โดยใช้สิ่งนี้: การตั้งค่าตอนเช้าของฉันตอนนี้สคริปต์ทั้งหมด :)
Max Williams

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