มีกล่องข้อความ GUI หรือกล่องข้อความที่แสดงภายในเทอร์มินัล
นอกจากนี้ยังเป็นเรื่องที่น่าสนใจที่จะสามารถรับอินพุตจากผู้ใช้เช่นปุ่มใช่ / ไม่ใช่หรือปุ่มตัวเลือก
มีกล่องข้อความ GUI หรือกล่องข้อความที่แสดงภายในเทอร์มินัล
นอกจากนี้ยังเป็นเรื่องที่น่าสนใจที่จะสามารถรับอินพุตจากผู้ใช้เช่นปุ่มใช่ / ไม่ใช่หรือปุ่มตัวเลือก
คำตอบ:
สำหรับกล่อง "รอบข้อความ" มาตรฐานให้ใช้boxes
:
echo 'This is a test' | boxes
boxes
จะมีลักษณะเช่นนี้ (อันแรกอันที่สองเป็นแบบกำหนดเองcowsay
):
หากคุณหมายถึงกล่องเตือนให้ใช้notify-send
:
notify-send 'title' 'message'
notify-send
มีลักษณะเช่นนี้:
คุณยังสามารถใช้zenity
สำหรับหน้าต่างป๊อปอัป:
zenity --error --text="An error occurred\!" --title="Warning\!"
Zenity เป็นกราฟิกมากกว่าและมีตัวเลือกเพิ่มเติมเช่นให้หน้าต่างปรากฏเป็นคำถามโดยใช้:
zenity --question --text="Do you wish to continue/?"
หรือแม้กระทั่งแถบความคืบหน้าโดยใช้:
find /usr | zenity --progress --pulsate --auto-close --auto-kill --text="Working..."
zenity
มีลักษณะเช่นนี้:
หรือใช้dialog
สำหรับกล่องข้อความเฉพาะบรรทัดคำสั่ง:
dialog --checklist "Choose OS:" 15 40 5 \
1 Linux off \
2 Solaris on \
3 'HP UX' off \
4 AIX off
dialog
มีลักษณะเช่นนี้:
ตัวเลือกอื่นคือwhiptail
:
whiptail --title "Example Dialog" --msgbox "This is an example of a message box. You must hit OK to continue." 8 78
whiptail
มีลักษณะเช่นนี้:
และถ้าคุณบ้าอย่างแท้จริงใช้toilet
:
toilet -F border -F gay "CRAZY"
toilet
มีลักษณะเช่นนี้:
zenity
เพื่อทำให้ตัวเองเครียดเดือนละครั้งในแผนกอัปเดตและอัปเกรด ...
xmessage
นี่คือปู่ของการแจ้งเตือน GUI:
xmessage -center "Hello, World!"
ความดีย้อนยุคบริสุทธิ์
ฉันเดิมพันด้วยว่าควรจะมีอยู่ในระบบ X11 อย่างกว้างขวาง
ดังนั้นหัวข้อ: วิธีการแสดงกล่องข้อความ GUI จากสคริปต์ทุบตีในลินุกซ์? | กองล้นมากเกินไป
ทดสอบใน Ubuntu 18.04
xmessage
แม้จะติดตั้งบนเซิร์ฟเวอร์ Ubuntu โดยปริยาย ดังนั้นฉันสามารถใช้ssh -Y <host>
เพื่อเข้าสู่เครื่องในขณะที่ส่งต่อการเชื่อมต่อ x จากนั้นเรียกใช้some-command; xmessage "some-command is done"
เพื่อป๊อปอัพการแจ้งเตือนบนเดสก์ท็อปของฉันเมื่อคำสั่งที่รันเป็นเวลานานเสร็จสิ้น
xmessage -timeout 10 "Goodbye in 10s!"
อัตโนมัติล้างข้อความหลังจากนั้นไม่กี่วินาที
และเนื่องจาก @ polym เป็นคำตอบที่สมบูรณ์ที่สุดที่ไม่ได้รับการส่งข้อความแบบคลาสสิก:
write <username> [<terminal>]
- ส่งข้อความถึงผู้ใช้รายอื่น อาจโต้ตอบหรือเป็นส่วนหนึ่งของไปป์ด้วยecho "message" | write username
และส่วนประกอบในการเขียนwall
เพื่อส่งข้อความถึงผู้ใช้ทั้งหมด
หากคุณยินดีที่จะไพพ์ข้อความไปยัง wrapper Python คุณสามารถใช้terminaltables
:
pip3 install colorclass
pip3 install terminaltables
จากนั้นในGitHub Repoคุณสามารถใช้หนึ่งในตัวอย่างในการเขียน wrapper ของไพ ธ อน