如何从命令行创建消息框?


65

GUI消息框或显示在终端内部的消息框。

能够从用户那里获得简单的输入(例如“是/否”或单选按钮)也将很有趣。


8
“消息框”是​​什么意思?一个图形警报框,一个弹出消息框?还有吗
polym

Answers:


110

对于标准的“邮件周围的框”,请使用boxes

echo 'This is a test' | boxes

boxes看起来像这样(第一个。第二个是类似的自定义cowsay):

一个星号框和一个带有文本符号的ASCII艺术狗的屏幕截图


如果您是指警告框,请使用notify-send

notify-send 'title' 'message'

notify-send 看起来像这样:

弹出消息显示“ Hello Ashframe ...”


您还可以将其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 看起来像这样:

具有4个选项的对话框TUI


另一种选择是whiptail

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

whiptail 看起来像这样:

带有两个文本按钮的whiwtail弹出框


如果您真的很疯狂,请使用toilet

toilet -F border -F gay "CRAZY"

toilet 看起来像这样:

彩色文本框显示为“ CRAZY”


3
答案很完整,很有用!谢谢!

优秀的写作,@ polym –我zenity每月都会在更新和升级部门动动自己的神经……
Frank Nocke

27

消息

这是GUI警报的祖父:

xmessage -center "Hello, World!"

纯正的复古美感。

我还打赌它应该在X11系统上广泛可用。

SO线程:如何从Linux中的bash脚本显示GUI消息框?| 堆栈溢出

在Ubuntu 18.04中测试。


在我的Openbox安装中可以立即使用。谢谢!
aexl

xmessage甚至默认情况下安装在Ubuntu Server上。因此,我可以ssh -Y <host> 在转发x个连接时登录到计算机,然后some-command; xmessage "some-command is done"在长时间运行的命令完成后运行以在桌面上弹出通知。
Stephen Ostermiller

@StephenOstermiller是的,这是一个很好的提示!
Ciro Santilli新疆改造中心法轮功六四事件

1
很酷的命令。要在几秒钟后自动清除消息:xmessage -timeout 10 "Goodbye in 10s!"
AlainD

8

然后,因为@polym完全是最重要的答案,所以错过了经典消息:

write <username> [<terminal>]-向其他用户发送消息。交互地或作为管道的一部分echo "message" | write username

写


并补充编写,wall向所有用户发送消息

壁


1

如果您愿意将文本通过管道传递给Python包装器,则可以使用terminaltables

pip3 install colorclass
pip3 install terminaltables

然后在GitHub Repo中,您可以使用示例之一来编写python包装器。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.