如何在Linux中的bash脚本中显示GUI消息框?
我正在Ubuntu Linux下编写一些小bash脚本。我希望能够从GUI运行它们而无需终端窗口来输入任何输入或者查看任何输出。
到目前为止,所需的唯一输入就是用于sudo和gksudo句柄的密码。
但是我还没有找到显示消息框的简便方法。是否有某种" gkmessage"命令可用?我希望在默认的Ubuntu安装中提供一些东西,但是如果有必要,我不介意安装新软件包。
解决方案
回答
我找到了xmessage命令,这已经足够好了。
回答
这是一个小的Tcl脚本,可以执行我们想要的操作。 Wish解释器应默认安装在Ubuntu上。
#!/usr/bin/wish pack [label .msg -text [lindex $argv 0]] pack [entry .ent] bind .ent <KeyPress-Return> { puts [.ent get]; destroy . } focus .ent
这样称呼它:
myanswer=`gui-prompt "type your answer and press enter"`
回答
我相信Zenity会做我们想要的。它是专门为从命令行显示GTK对话框而设计的,并且可以作为Ubuntu软件包使用。
回答
也有dialog
和KDE版本kdialog
。 slackware使用dialog
,因此它可能无法立即在其他发行版中使用。
回答
Kdialog和对话框都很好,但是我建议Zenity。快速,轻松,更好地查看xmessage或者对话框。
回答
Zenity确实是我认为我们正在寻找的确切工具。
或者
zenity --help
回答
zenity应用程序似乎就是我们要寻找的。
要从zenity中获取输入,可以指定一个变量,并将zenity --entry的输出保存到该变量中。看起来像这样:
my_variable=$(zenity --entry)
如果现在查看my_variable中的值,它将是在zenity弹出输入对话框中键入的值。
如果要提示用户(或者我们)应在对话框中输入什么内容,请添加--text开关并添加所需的标签。看起来像这样:
my_variable=$(zenity --entry --text="What's my variable:")
Zenity还有许多其他针对特定任务的不错的选择,因此我们可能也想通过zenity --help来检查一下。一个示例是--calendar选项,它使我们可以从图形日历中选择一个日期。
my_date=$(zenity --calendar)
根据用户单击的日期,可以给出格式正确的日期:
echo ${my_date}
给出:
08/05/2009
滑块选择器,错误,列表等还有一些选项。
希望这可以帮助。