ฉันมีคำสั่งเทอร์มินัลที่ฉันเรียกใช้จากโปรแกรมเรียกใช้งาน วิธีนี้ใช้งานได้ดี แต่บางครั้งคำสั่งล้มเหลวดังนั้นฉันต้องการให้เทอร์มินัลเปิดอยู่เพื่อที่ฉันจะได้เห็นผลลัพธ์ ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันมีคำสั่งเทอร์มินัลที่ฉันเรียกใช้จากโปรแกรมเรียกใช้งาน วิธีนี้ใช้งานได้ดี แต่บางครั้งคำสั่งล้มเหลวดังนั้นฉันต้องการให้เทอร์มินัลเปิดอยู่เพื่อที่ฉันจะได้เห็นผลลัพธ์ ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
สมมติว่าคำสั่งของคุณถูกเรียกmycommand
ฉันจะเปลี่ยนตัวเรียกใช้ของฉันเพื่อเรียกใช้สิ่งนี้:
gnome-terminal -e "mycommand|less"
หากคุณต้องการวิธีแก้ปัญหาที่ถาวรกว่าและสะอาดกว่าเปิด gnome-terminal แล้วไปที่แก้ไขการตั้งค่าโปรไฟล์และคลิกแท็บชื่อและคำสั่ง เปลี่ยนตัวเลือก "ออกคำสั่งเมื่อ" เป็น "เปิดเทอร์มินัลค้างไว้"
เมื่อคุณรันคำสั่งตอนนี้มันควรเปิดเทอร์มินัลเมื่อมีบางสิ่งทำงานอยู่
แก้ไข: ถ้าคุณไม่สนใจเทอร์มินัลจริงๆคุณสามารถใช้เครื่องหมายพักของ xterm:
xterm -e "mycommand" hold
ตัวเรียกใช้ของคุณกำลังเรียกใช้สคริปต์ใช่ไหม
ในตอนท้ายของสคริปต์ของคุณเพิ่ม
read -p "Press any key to exit > " -n1 junk
echo
จากนั้นสคริปต์ของคุณจะรอจนกว่าคุณจะเลือกที่จะจบ
command || read -n1 -p "Command failed. Press any key to exit..."
ในทางลัด .desktop ของคุณใช้สิ่งนี้
Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"
หลังจากสคริปต์ของคุณเสร็จสิ้นกระบวนการ Bash จะแทนที่ตัวเองด้วยการร้องขอใหม่ของตัวเอง
หากคุณต้องการส่งอาร์กิวเมนต์ที่อ้างถึงไปยังสคริปต์ของคุณคุณจะต้องหลีกเลี่ยงอัญประกาศ:
Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"
แนวทางที่แตกต่างกันเล็กน้อยจากคำตอบอื่น ๆ : เรียกใช้คำสั่งของคุณและหากล้มเหลวให้วางไข่เปลือก วิธีนี้คุณไม่จำเป็นต้องปิดเทอร์มินัลค้างไว้ (ซึ่งไม่แยกความแตกต่างระหว่างความสำเร็จของคำสั่งหรือความล้มเหลว) และคุณอาจพบว่าเชลล์นั้นมีประโยชน์อย่างยิ่งในความล้มเหลว หากต้องการปิดเพียงแค่ใช้ Ctrl-D (EOF), "exit", Alt-F4 (หรือตัวจัดการหน้าต่างที่คุณใช้เพื่อปิดหน้าต่าง) ฯลฯ
#!/bin/sh
[ $# -eq 0 ] && {
echo "$(basename $0): no command" >&2
exit 1
}
"$@" || {
echo "failed: $?"
exec $SHELL
}
วางไฟล์นี้ไว้ที่ใดที่หนึ่งเช่น ~ / bin จากนั้นใช้ "success-or-shell คำสั่งดั้งเดิมของคุณ" ในตัวเรียกใช้งานของคุณ
คำตอบนี้ให้คำตอบที่ดีที่สุดที่ฉันเคยเห็นเพื่อทำสิ่งที่คุณต้องการ พวกเขาแนะนำให้สร้างสคริปต์ด้วยคำสั่งเพื่อดำเนินการและใช้กับพารามิเตอร์ --init-file (เฉพาะทุบตี แต่คุณอาจทำเช่นเดียวกันสำหรับ csh / tcsh / zsh ฯลฯ ):
#!/bin/bash --init-file
commands to run
... และดำเนินการตาม:
xterm -e /path/to/script
# or
gnome-terminal -e /path/to/script
# or
the-terminal -e bash --init-file /path/to/script/with/no/shebang
ใช้watch
คำสั่ง
รูปแบบ: watch -n60 myCommand
หรือwatch -n60 "my command string"
-n
ระบุจำนวนวินาทีที่รอระหว่างการโทรไปยังmyCommand ; ตัวอย่าง: คำสั่งด้านบนจะเรียกmyCommandทุก ๆ 60 วินาทีตลอดไป"my command string"
หากคำสั่งมีหลายคำใส่ไว้ในคำพูดสอง:สมมติว่าคุณต้องการตัวเรียกใช้งานซึ่งแสดงการใช้งานดิสก์และเปิดให้ผู้อ่านเห็นได้ตลอดเวลา ฉันแค่ใช้คำสั่งนี้ภายในตัวเรียกใช้:
watch -n60 "df -h"
ซึ่งจะเรียกใช้df -h
ทุกๆ 60 วินาที
ฉันชอบสิ่งนี้มากกว่าคำตอบที่ยอมรับgnome-terminal -e "mycommand|less"
เพราะฉันใช้ Xubuntu ซึ่งใช้เทอร์มินัลอื่นตามค่าเริ่มต้น
--tab-with-profile=PROFILENAME
ตัวเลือกgnome-terminal คุณสามารถมีโปรไฟล์จำนวนมากสำหรับบาฮาวีที่แตกต่างกันด้วยวิธีนี้ :-)