Làm thế nào để tạo một hộp thông báo từ dòng lệnh?


65

Hộp thông báo GUI hoặc hộp thông báo hiển thị bên trong thiết bị đầu cuối.

Cũng rất thú vị khi có thể lấy lại đầu vào đơn giản từ người dùng, ví dụ: có / không hoặc các nút radio.


8
"Hộp tin nhắn" nghĩa là gì? Một hộp cảnh báo đồ họa, một hộp thông báo bật lên? Thứ gì khác?
polym

Câu trả lời:


110

Đối với một "hộp xung quanh một tin nhắn" tiêu chuẩn, sử dụng boxes:

echo 'This is a test' | boxes

boxessẽ trông như thế này (Cái thứ nhất. Cái thứ hai là một tùy chỉnh như cowsay):

Ảnh chụp màn hình hộp hoa thị và con chó nghệ thuật ASCII cầm dấu văn bản


Nếu bạn có nghĩa là một hộp cảnh báo, sử dụng notify-send:

notify-send 'title' 'message'

notify-send trông như thế này:

Tin nhắn bật lên đọc "Xin chào Ashframe ..."


Bạn cũng có thể sử dụng zenitycho một cửa sổ bật lên:

zenity --error --text="An error occurred\!" --title="Warning\!"

Zenity có nhiều đồ họa hơn và có nhiều tùy chọn hơn, như có cửa sổ xuất hiện dưới dạng câu hỏi, sử dụng:

zenity --question --text="Do you wish to continue/?"

hoặc thậm chí thanh tiến trình, sử dụng:

find /usr | zenity --progress --pulsate --auto-close --auto-kill --text="Working..."

zenity trông như thế này:

hộp thoại báo lỗi, câu hỏi, thông tin và cảnh báo với các nút


Hoặc sử dụng dialog, cho hộp thông báo chỉ dòng lệnh:

dialog --checklist "Choose OS:" 15 40 5 \
1 Linux off \
2 Solaris on \
3 'HP UX' off \
4 AIX off

dialog trông như thế này:

hộp thoại TUI với 4 tùy chọn


Một lựa chọn khác là whiptail:

whiptail --title "Example Dialog" --msgbox "This is an example of a message box. You must hit OK to continue." 8 78

whiptail trông như thế này:

hộp bật lên whiptail với hai nút văn bản


Và nếu bạn thực sự điên, hãy sử dụng toilet:

toilet -F border -F gay "CRAZY"

toilet trông như thế này:

hộp văn bản đầy màu sắc đọc "CRAZY"


3
Câu trả lời thực sự đầy đủ, nó hữu ích! Cảm ơn bạn!

Bài viết tuyệt vời, @polym - Tôi sẽ sử dụng zenityđể lấy lại tinh thần của chính mình mỗi tháng một lần trong bộ phận cập nhật & nâng cấp ...
Frank Nocke

27

xmessage

Đây là phần lớn các cảnh báo GUI:

xmessage -center "Hello, World!"

Lòng tốt retro thuần khiết.

Tôi cũng đặt cược rằng nó nên có sẵn rộng rãi trên các hệ thống X11.

Chủ đề SO: Làm thế nào để hiển thị hộp thông báo GUI từ tập lệnh bash trong linux? | Tràn ngăn xếp

Đã thử nghiệm trong Ubuntu 18.04.


Làm việc ra khỏi hộp trên cài đặt Openbox của tôi. Cảm ơn!
aexl

xmessagethậm chí được cài đặt trên Ubuntu Server theo mặc định. Vì vậy, tôi có thể sử dụng ssh -Y <host> để đăng nhập vào máy trong khi chuyển tiếp x kết nối và sau đó chạy some-command; xmessage "some-command is done"để bật lên thông báo trên màn hình của mình khi lệnh chạy dài kết thúc.
Stephen Ostermiller

@StephenOstermiller vâng, đó là một mẹo hay!
Ciro Santilli 心 心

1
Lệnh mát mẻ. Để tự động xóa tin nhắn sau vài giây : xmessage -timeout 10 "Goodbye in 10s!".
AlainD

8

Và sau đó chỉ vì @ polym hoàn toàn vượt qua câu trả lời hàng đầu đã bỏ lỡ tin nhắn cổ điển:

write <username> [<terminal>]- gửi tin nhắn cho người dùng khác. Hoặc tương tác hoặc là một phần của một đường ống vớiecho "message" | write username

viết


Và phần bổ sung để viết, wallđể gửi tin nhắn cho tất cả người dùng

Tường


1

Nếu bạn sẵn sàng chuyển văn bản sang trình bao bọc Python, bạn có thể sử dụng terminaltables:

pip3 install colorclass
pip3 install terminaltables

Sau đó, trong GitHub Repo , bạn có thể sử dụng một trong những ví dụ để viết một trình bao bọc python.

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.