Linux shell 对话框,linux系统shell脚本中使用图形对话框

]  指定将在对话框的上方显示的标题字符串

[--colors]    解读嵌入式“\ Z”的对话框中的特殊文本序列,序列由下面的字符 0-7, b  B, u, U等,恢复正常的设置使用“\Zn”。

[--no-shadow]   禁止阴影出现在每个对话框的底部

[--shadow]   应该是出现阴影效果

[--insecure]   输入部件的密码时,明文显示不安全,使用星号来代表每个字符

[--no-cancel]   设置在输入框,菜单,和复选框中,不显示“cancel”项

[--clear]   完成清屏操作。在框体显示结束后,清除框体。这个参数只能单独使用,不能和别的参数联合使用。

[--ok-label ]   覆盖使用“OK”按钮的标签,换做其他字符。

[--cancel-label ]  功能同上

[--backtitle ] 指定的backtitle字符串显示在背景顶端。

[--begin ]   指定对话框左上角在屏幕的上的做坐标

[--timeout ]   超时(返回的错误代码),如果用户在指定的时间内没有给出相应动作,就按超时处理

[--defaultno]   使的是默认值 yes/no,使用no

[--sleep ]

[--stderr]  以标准错误方式输出

[--stdout]  以标准方式输出

[--output-fd ] 指定输出文件描述符,如果是标准输出则使用--output-fd 1

[--output-separator ] 指定输出多个值时之间的分隔符,如--output-separator ','

[--default-item ]  设置在一份清单,表格或菜单中的默认项目。通常在框中的第一项是默认

窗体类型:

使用命令dialog也可以直接查看具体参数

常见的对话框控件选项有:

[ –calendar ] 提供了一个日历,让你可以选择日期

[ –checklist ] 允许你显示一个选项列表,每个选项都可以被单独的选择 (复选框)

[ –from ] 允许您建立一个带标签的文本字段,并要求填写

[ –fselect ] 提供一个路径,让你选择浏览的文件

[ –gauge ] 显示一个表,呈现出完成的百分比,就是显示出进度。

[ –infobox ] 显示消息后,(没有等待响应)对话框立刻返回,但不清除屏幕 (信息框)

[ –inputbox ] 让用户输入文本 (输入框 )

[ –inputmenu ] 提供一个可供用户编辑的菜单 (可编辑的菜单框)

[ –menu ] 显示一个列表供用户选择 (菜单框)

[ –msgbox ] 显示一条消息,并要求用户选择一个确定按钮 (消息框 )

[ –pause ] 显示一个表格用来显示一个指定的暂停期的状态

[ –passwordbox ] 显示一个输入框,它隐藏文本

[ –passwordfrom ] 显示一个来源于标签并且隐藏的文本字段

[ –radiolist ] 提供一个菜单项目组,只有一个项目,可以选择 (单选框 )

[ –tailbox ] 在一个滚动窗口文件中使用tail命令来显示文本

[ –tailboxbg] 跟tailbox类似,但是在background模式下操作

[ –textbox ] 在带有滚动条的文本框中显示文件的内容 (文本框)

[ –timebox ] 提供一个窗口,选择小时,分钟,秒

[ –yesno ] 提供一个带有yes和no按钮的简单信息框 (是/否框)

命令示例

1.消息框

格式:dialog --msgbox text height width

例子:

(dialog --title TESTING --msgbox "this is a msgbox" 10 20)

ret=$?

if [ ${ret} -eq 0 ] ;then

echo "ok"

fi

2.yesno框

格式:dialog –yesno text height width

例子:

(dialog --title "yes/no" --no-shadow --yesno "do you want to click yes?" 10 30)

ret = $?

if [ ${ret} -eq 0 ] ;then

echo "yes clicked"

else

echo "not yes"

fi

3.输入框

格式:dialog --inputbox text height width

例子:

inputtxt=$(dialog --output-fd 1 --title "Input your name" --inputbox "Please input your name:" 10 30)

echo ${inputtxt}

4.密码框

格式:

dialog  --passwordbox text height width [init]

例子:

passwd=$(dialog --output-fd 1 --title "Password" --passwordbox "Please type password:" 10 35)

echo ${passwd}

这样我们的密码就暴露出来了,是不是很不安全,所以通常我们会加上一个安全选项

--insecure 将每个字符用*来显示出来

passwd=$(dialog --output-fd 1 --title "Password" --insecure --passwordbox  "Please type password:" 10 30)

echo ${passwd}

5.文本框

格式:dialog --textbox file height width

例子:

dialog --title "Please review the fstab" --textbox /etc/fstab 28 60

6.菜单框

格式:dialog --menu text height width menu-height tag1 item1 tag2 item2 …

例子:

selectedid=$(dialog --output-fd 1 --title "Pick a choice" --menu "Choose one" 12 35 5 1 "say hello to everyone" 2 "thanks for your support" 3 "exit")

echo ${selectedid}

7.Fselect框(文件选择框)

格式:dialog --fselect filepath height width

例子:

filename=$(dialog --output-fd 1 --title "Pick one file" --fselect /etc/ 7 40)

echo ${filename}

8.复选框

格式:dialog --checklist "Test" height width menu-height [tag1 item1 status1] [tag2 item2 status2] …

例子:

lst=$(dialog --output-fd 1 --backtitle "Checklist" --checklist "Test" 20 50 10 Memory Memory_Size on Disk Disk_Size off CPU CPU_count on)

for item in ${lst}

do

echo ${item} selected.

done

9.显示日历

格式:dialog --calendar "Date" height width day month year

例子:

#显示当前日期

thisdate=$(dialog --output-fd 1 --title "Calendar" --calendar "Date" 5 50)

echo ${thisdate}

#显示指定日期

thisdate=$(dialog --output-fd 1 --title "Calendar" --calendar "Date" 5 50 1 5 2020)

echo ${thisdate}

10.进度框架

格式:dialog --gauge text height width  []

例子:

#固定进度显示

dialog --title "installation pro" --gauge "installation" 10 30 10

#实时动态进度

for i in {1..100} ;do echo $i;done |dialog --title "installation pro" --gauge "installation" 10 30

顺便补充一个tar命令压缩解压缩带进度条的实现

需要用到pv命令,默认是已经安装的,如果没有安装参考以下命令

yum install pv    #centos

apt install pv    #ubuntu

brew install pv   #mac

# 解压缩

pv ${filename} | tar -zxf -

# 压缩

tar -cf - "${filename}" | pv -s $(($(du -sk "${filename}" | awk '{print $1}') * 1024)) | gzip > ${filename}.tar.gz

# 还可以在tar命令后加上以下选项用逗号代替进度 --checkpoint=100 --checkpoint-action=dot --totals

zenity

zenity是一个开源显示GTK+对话框的命令行应用程序,它允许在图形框中与shell交互信息。

该应用程序允许您在命令行中创建图形对话框,并使用户和shell之间的交互非常容易。

Zenity特性

FOSS软件

跨平台应用程序

允许GTK +对话框执行

命令行工具

在Shell脚本中的支持

用处

轻松创建GUI

比其他复杂工具更少的功能

使shell脚本能够与GUI用户交互

对于图形用户交互,可以进行简单的对话创建

Zentity默认安装或者在今天大多数的标准Linux发行库可用。

如果没有安装使用以下命令安装

sudo apt install zenity

Zenity基本对话框

1.快速日历对话框

thisdate=$(zenity --calendar)

echo ${thisdate}

2.错误提示框

zenity --title="error" --text="hhaha" --error

3.一般文本输入对话框

thistxt=$(zenity --entry --title="name" --text="please input your name:")

echo ${thistxt}

4.信息提示框

zenity --info --title="info" --text="hello info"

5.问题对话框

zenity --title="?" --text="1 are you ok ?" --question

6.进度条

zenity --title="progess of xxx" --text="runing ..." --progress --auto-close --percentage=30

#实时动态进度

for i in {1..100} ;do echo $i; sleep 0.2;done | zenity --title="progess of xxx" --text="runing ..." --progress --auto-close

#实时动态进度示例2

(

echo "50";

tar -zxvf test.tar.gz ;

echo "100";

) |zenity --progress --title="test" --text="test" --auto-close

7.缩放对话框

zenity --title="scale of xxx" --text="scale:" --scale

8.密码输入框

zenity --title="password of xxx" --text="password:" --password

9.窗体对话框

zenity --title="forms of xxx" --text="forms ..." --forms

--text=STRING

--separator=STRING

--add-entry=FIELDNAME

--add-password=FIELDNAME

--add-calendar=FIELDNAME

thisform=$(zenity --forms --title "" --text="信息" --separator="," \

--ok-label="确定" --cancel-label="取消" \

--add-entry="IP地址" --add-entry="端口号" \

--add-entry="域名" --add-entry="用户名" \

--add-password="密码")

if [ "$?" = "0" ] ;then

ip=$(awk -F, '{print $1}' <<

10.关于对话

zenity --about

11. 拾色器

thisrgb=$(zenity --title="please select your color" --color-selection)

echo ${thisrgb}

12. 文件选择器

thisfile=$(zenity --title="please select your file" --file-selection)

echo ${thisfile}

13. 列表对话框

zenity --list

List options

--text=STRING        Set the dialog text

--column=STRING      Set the column header

--checklist          Use check boxes for first column

--radiolist          Use radio buttons for first column

--separator=STRING   Set output separator character

--multiple           Allow multiple rows to be selected

--editable           Allow changes to text

--print-column=NUMBER

Specify what column to print to standard output. The default is to return the first

column. 'ALL' may be used to print all columns.

--hide-column=NUMBER Hide a specific column

--hide-header        Hides the column headers

# radiolist:

thisradio=$(zenity --list --text "Is this helpful?" \

--radiolist --column "Pick" --column "Opinion" \

TRUE Amazing FALSE Average FALSE "Difficult to follow" FALSE "Not helpful");

echo ${thisradio}

# checklist:

thisoption=$(zenity --list --text "What do you think of this?" \

--checklist --column "Pick" --column "options" \

TRUE "More pictures" TRUE "More complete post" \

FALSE "Includes Installation guidelines" \

FALSE "Create a forum for question queries" \

--separator=":");

echo ${thisoption}

14. 通知对话框

zenity  --notification --text "Please update your system."

参考资料

https://www.jianshu.com/p/fd2122832a1e

https://www.howtoing.com/zenity-creates-graphical-gtk-dialog-boxes-in-command-line-and-shell-scripts/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值