侧边栏壁纸
博主头像
小斯小站 博主等级

用心分享技术

  • 累计撰写 37 篇文章
  • 累计创建 75 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

Linux dialog命令使用指南

SCH小斯
2024-04-25 / 0 评论 / 0 点赞 / 16 阅读 / 81900 字
温馨提示:
本文最后更新于 2024-05-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

liunx 下的dialog工具是一个可以和shell脚本配合使用的文本界面下的创建对话框的工具。

获取返回结果

dialog程序的对话框默认通过stderr返回,需要使用文件定向符将返回结果重定向到一个临时文件中,我将使用一个输入框演示:

dialog --inputbox \
   "输入文本" 0 0 "value" 2>.dialog_temp
result=`cat .dialog_temp`

此时,$result变量中将会存储输入框输入的值

通用参数

通用参数需要添加在控件参数之前

参数名称

参数用途

参考值

--ascii-lines

通过ascii方式显示线

 

--aspect

用于设置对话框的宽高比

1.5

--backtitle

设置背景标题

背景标题

--beep

显示对话框时发出蜂鸣声

 

--beep-after

显示对话框后发出蜂鸣声

 

--begin

设置对话框的位置(y x)

0 0

--cancel-label

自定义取消按钮的文字,部分对话框可用

取消

--clear

清除dialog产生的对话框

 

--colors

设置允许彩色文字

 

--column-separator

设置多列的分隔符

 

--cr-wrap

允许文本自动换行

 

--date-format

设置日期格式

%Y-%m-%d

--default-button

设置默认选中的按钮

cancel

--default-item

设置列表默认项

<列表项>

--defaultno

默认选中no

 

--erase-on-exit

关闭对话框时清除对话框背景

 

--exit-label

自定义退出按钮文本

退出

--extra-button

显示额外的按钮

 

--extra-label

自定义额外的按钮的文本

更多

--help-button

显示帮助按钮

 

--help-label

自定义帮助按钮的文本

帮助

--help-status

帮助状态

 

--help-tags

帮助标签

 

--hfile

帮助文件

<文件名>

--hline

在底部显示水平线,并添加文字

水平线

--ignore

忽略按键

 

--input-fd

指定输入的文件描述符

fd

--insecure

对话框安全模式,使输入的密码显示为星号

 

--item-help

项目帮助信息

 

--keep-tite

当标题过长时不自动截断

 

--keep-window

保持对话框大小,不能被用户改变

 

--last-key

指定最后按下的按键

 

--max-input

设置输入框最大输入长度

10

--no-cancel

隐藏取消按钮

 

--no-collapse

禁用对话框自动折叠

 

--no-hot-list

禁用快捷键

 

--no-items

禁用列表显示

 

--no-kill

不终止对话框

 

--no-label

不显示标签

 

--no-shadow

不显示阴影

 

--no-tags

禁用对话框的tags

 

--ok-label

自定义确定按钮的文本

确定

--output-fd

指定输出文件描述符

fd

--output-separator

输入文本分隔符

 

--print-maxsize

打印最大大小

 

--print-size

打印大小

 

--print-text-only

只打印文本

 

--print-text-size

打印文字大小

 

--print-version

打印版本

 

--quoted

引用文本

 

--recorder

记录器

 

--scrollbar

显示滚动条

 

--separate-output

分隔输出

 

--separate-widget

分隔组件

 

--single-quoted

单引号

 

--size-err

大小错误

 

--sleep

延迟时间

3

--stderr

通过标准错误返回结果

 

--stdout

通过标准输出返回结果

 

--tab-correct

启用tab字符更正

 

--tab-len

设置tab长度

 

--time-format

设置时间格式

%H:%M:%S

--timeout

设置显示时长

5

--title

标题

标题

--trace

启用对话框跟踪模式,并指定跟踪输出文件

output.txt

--trim

删除文本前后的空格

 

--version

显示dialog程序的版本号

 

--visit-items

设置对话框为访问模式,用于依次访问选项

 

--week-start

星期开始的日

Sunday

--yes-label

自定义是按钮的文本

基本控件

Buildlist 双列列表

通过--buildlist参数创建一个双列列表,命令格式:--buildlist <text> <height> <width> <list- height> <tag1> <item1> <status1>...,其中最后3个参数是一组选项,可以重复添加

参数名

参数用途

参考值

text

对话框标题

双列列表

height

对话框高度

0

width

对话框宽度

0

list-height

列表框高度

0

tag1

列表项值,用于返回结果

value1

item1

列表项名称,用于显示

选项1

status1

列表项状态,用于控制显示在左边或右边

on/off

dialog --buildlist \
    "双列列表" 0 0 0 \
    "value1" "选项1" "on" \
    "value2" "选项2" "off"

双列列表

Calendar日期选择

通过--calendar参数创建一个日期选择框,命令格式:--calendar <text> <height> <width> <day> <month> <year>

参数名

参数用途

参考值

text

对话框标题

日期选择框

height

对话框高度

0

width

对话框宽度

0

day

默认日期

20

month

默认月份

9

year

默认年份

2023

dialog --calendar \
    "日期选择框" 0 0 \
    20 9 2023

日期选择

Checklist复选框列表

通过--checklist参数创建一个复选框列表框,命令格式:--checklist <text> <height> <width> <list height> <tag1> <item1> <status1>...,其中最后3个参数是一组选项,可以重复添加

参数名

参数用途

参考值

text

对话框标题

复选框列表

height

对话框高度

0

width

对话框宽度

0

list height

列表高度

0

tag1

列表项值,用于返回

value1

item1

列表项名称,用于显示

列表项1

status1

列表项状态,是否选中

on/off

dialog --checklist \
    "复选框列表" 0 0 0 \
    "value1" "列表项1" "on" \
    "value2" "列表项2" "off"

复选框列表

Dselect目录选择

通过--dselect参数创建一个目录选择框,命令格式:--dselect <directory> <height> <width>

参数名

参数用途

参考值

directory

选择框默认文件夹

~

height

对话框高度

0

width

对话框宽度

0

dialog --dselect \
    ~ 0 0

目录选择框

Editbox文件编辑

通过--editbox参数创建一个文件编辑框,命令格式:--editbox <file> <height> <width>

参数名| 参数用途| 参考值 | |---|---|--- | |file| 编辑的文件| /etc/issue | |height| 对话框高度| 0 | |width| 对话框宽度| 0

dialog --editbox \
    /etc/issue 0 0

文件编辑框

Form表单

通过--form参数创建一个表单对话框,命令格式:--form <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...,其中从label1开始到ilen1共8个参数为一组,可以重复添加

参数名

参数用途

参考值

text

对话框标题

表单对话框

height

对话框高度

0

width

对话框宽度

0

form height

表单高度

0

label1

字段标签

字段1

l_y1

字段标签y坐标

1

l_x1

字段标签x坐标

1

item1

字段默认值

value1

i_y1

字段输入框y坐标

1

i_x1

字段输入框x坐标

10

flen1

字段输入框宽度

30

ilen1

字段输入框高度

0

dialog --form \
    "表单对话框" 0 0 0 \
    "字段1" 1 1 "value1" 1 10 30 0 \
    "字段2" 2 1 "value2" 2 10 30 0

表单对话框

Fselect文件选择

通过--fselect参数创建一个文件选择框,命令格式:--fselect <filepath> <height> <width>

参数名

参数用途

参考值

filepath

默认文件路径

/etc/issue

height

对话框高度

0

width

对话框宽度

0

dialog --fselect \
    /etc/issue 0 0

文件选择

Gauge进度条

通过--gauge参数创建一个进度条对话框,命令格式:--gauge <text> <height> <width> [<percent>]

参数名

参数用途

参考值

text

对话框名称

进度条

height

对话框高度

10

width

对话框宽度

30

percent

进度条百分比

0

dialog --gauge \
    "进度条" 10 30 0

如果要动态改变进度条的进度,可以通过管道符向这个命令输入值

{
    for((i = 0; i <= 100; i++)); do
        sleep 0.1
        echo "$i"
        echo "XXXX"
        echo "当前进度:$i%"
    done
} | dialog --gauge "进度条" 10 30 0

进度条

Infobox信息框

通过--infobox参数创建信息框,命令格式: --infobox <text> <height> <width>

参数名

参数用途

参考值

text

消息文本

消息框

height

对话框高度

10

width

对话框宽度

20

dialog --infobox \
    "消息框" 10 20

消息框

但是我们发现,这样创建的对话框会自动关闭,那么需要让其能持续显示,需要在指令的后方增加延迟命令

dialog --infobox \
    "消息框" 10 20 \
&& sleep 3

这样就可以让对话框持续显示3秒

Inputbox文本输入

通过--inputbox参数创建一个文本输入对话框,命令格式:--inputbox <text> <height> <width> [<init>]

参数名

参数用途

参考值

text

对话框标题

输入文本

height

对话框高度

0

width

对话框宽度

0

init

输入框默认值

value

dialog --inputbox \
    "输入文本" 0 0 "value"

文本输入

Inputmenu输入菜单

通过--inputmenu参数创建一个输入菜单,命令格式:--inputmenu <text> <height> <width> <menu height> <tag1> <item1>...,其中最后2个参数为一组,可以重复添加

参数名

参数用途

参考值

text

对话框标题

输入菜单

height

对话框高度

15

width

对话框宽度

0

menu height

目录高度

0

tag1

选项名称

选项1

item1

选项内容

value1

dialog --inputmenu \
    "输入菜单" 15 0 0 \
    "选项1" "value1" \
    "选项2" "value2"

输入菜单

通过--menu参数创建一个输入菜单,命令格式:--menu <text> <height> <width> <menu height> <tag1> <item1>...,其中最后2个参数为一组,可以重复添加

参数名

参数用途

参考值

text

对话框标题

菜单

height

对话框高度

15

width

对话框宽度

0

menu height

目录高度

0

tag1

选项名称

选项1

item1

选项内容

value1

dialog --menu \
    "菜单" 15 0 0 \
    "选项1" "value1" \
    "选项2" "value2"

菜单

Mixedform多类型表单

通过--mixedform参数创建一个多类型表单,这个表单支持对每个字段的类型进行设置,命令格式:--mixedform <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1> <itype>...,其中从label1itype共9个参数为一组,可以重复添加

参数名

参数用途

参考值

text

对话框标题

多类型表单

height

对话框高度

0

width

对话框宽度

0

form height

表单高度

0

label1

字段标签

字段1

l_y1

字段标签y坐标

1

l_x1

字段标签x坐标

1

item1

字段默认值

value1

i_y1

字段输入框y坐标

1

i_x1

字段输入框x坐标

10

flen1

字段输入框宽度

30

ilen1

字段输入框高度

0

itype

字段输入框类型:

4

 

* 1:密码类型,输入隐藏

 

 

* 2:只读类型,无法修改

 

 

* 3:只读密码类型,隐藏且无法修改

 

 

* 4:普通文本类型:可以正常修改

 

dialog --mixedform \
    "多类型表单" 0 0 0 \
    "字段1" 1 1 "value1" 1 10 30 0 1 \
    "字段2" 2 1 "value1" 2 10 30 0 2 \
    "字段3" 3 1 "value1" 3 10 30 0 3 \
    "字段4" 4 1 "value1" 4 10 30 0 4

多类型表单

Mixedgauge多字段进度条

通过--mixedgauge参数创建一个多字段进度条,在进度条上方显示多个字段,命令格式:--mixedgauge <text> <height> <width> <percent> <tag1> <item1>...,其中最后2个参数为一组,可以重复添加

参数名| 参数用途| 参考值 | |---|---|--- | |text| 对话框标题| 多字段进度条 | |height| 对话框高度| 0 | |width| 对话框宽度| 0 | |percent| 进度条百分比| 0 | |tag1| 字段标签| 字段1 | |item1| 字段值| value1

dialog --mixedgauge \
    "多字段进度条" 0 0 0 \
    "字段1" "value1" \
    "字段2" "value2"

多字段进度条

我们发现,这个进度条会显示完后自动结束,所以需要通过一个循环让其持续显示

for ((i = 0; i <= 100; i++)); do
    sleep 0.1
    dialog --mixedgauge \
        "多字段进度条" 0 0 $i \
        "字段1" "value1" \
        "字段2" "value2"
done

多字段进度条动态

Msgbox消息框

通过--msgbox参数创建一个消息框,并带一个按钮,命令格式:--msgbox <text> <height> <width>

参数名

参数用途

参考值

text

消息内容

消息框

height

对话框高度

0

width

对话框宽度

0

dialog --msgbox \
    "消息框" 0 0

消息框

Passwordbox密码输入框

通过--passwordbox参数创建一个密码输入框,密码将隐藏,命令格式:--passwordbox <text> <height> <width> [<init>]

参数名

参数用途

参考值

text

对话框标题

密码输入框

height

对话框高度

0

width

对话框宽度

0

init

默认值

value

dialog --passwordbox \
    "密码输入框" 0 0 "value"

密码输入框

Passwordform密码表单

通过--passwordform参数创建一个密码表单,可以包含多个密码输入框,命令格式:--passwordform <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...,其中label1ilen1共8个参数为一组,可以重复添加

参数名

参数用途

参考值

text

对话框标题

密码表单

height

对话框高度

0

width

对话框宽度

0

form height

表单高度

0

label1

字段标签

字段1

l_y1

字段标签y坐标

1

l_x1

字段标签x坐标

1

item1

字段默认值

value1

i_y1

字段输入框y坐标

1

i_y2

字段输入框x坐标

10

flen1

字段输入框宽度

30

ilen1

字段输入框高度

0

dialog --passwordform \
    "密码表单" 0 0 0 \
    "字段1" 1 1 "value1" 1 10 30 0 \
    "字段2" 2 1 "value2" 2 10 30 0

密码表单

Pause等待对话框

通过--pause参数创建一个等待对话框,显示一个倒计时,命令格式:--pause <text> <height> <width> <seconds>

参数名

参数用途

参考值

text

对话框标题

等待对话框

height

对话框高度

10

width

对话框宽度

0

seconds

等待时间(秒)

3

dialog --pause \
    "等待对话框" 10 0 3

等待对话框

Prgbox命令执行对话框

通过--prgbox参数创建一个命令执行对话框,对话框中显示命令的执行结果,命令格式:--prgbox <text> <command> <height> <width>

参数名

参数用途

参考值

text

对话框标题

命令执行对话框

command

需要执行的命令

cat /etc/issue

height

对话框高度

10

width

对话框宽度

25

dialog --prgbox \
    "命令执行对话框" "cat /etc/issue" 10 25

命令执行对话框

Programbox程序对话框

通过--programbox参数创建一个程序对话框,用于显示程序执行结果,这个参数和grpbox的不同在于这个参数使用stdin传入执行结果,命令格式:--programbox <text> <height> <width>

参数名

参数用途

参考值

text

对话框标题

程序对话框

height

对话框高度

10

width

对话框宽度

25

cat /etc/issue | \
    dialog --programbox \
    "程序对话框" 10 25

程序对话框

Progressbox进程框

通过--progressbox参数创建一个进程框,用于执行进程并将结果显示在对话框中,命令格式:--progressbox <text> <height> <width>

参数名

参数用途

参考值

text

对话框标题

进程框

height

对话框高度

10

width

对话框宽度

50

{
    for ((i=0;i<=100;i+=10)); do
        echo "进程执行中:$i%"
        sleep 0.5
    done
} | dialog --progressbox \
"进程框" 10 50

进程框

Radiolist单选框

通过--raduilist参数创建一个单选框,命令格式:--radiolist <text> <height> <width> <list height> <tag1> <item1> <status1>...,其中最后3个参数为一组,可以重复添加

参数名

参数用途

参考值

text

对话框标题

单选框

height

对话框高度

0

width

对话框宽度

0

list height

列表高度

0

tag1

选项值,用于输出

option1

item1

选项名称,用于显示

选项1

status1

选项状态,是否选中,若多个选项都设为on,只有第一个on生效

on/off

dialog --radiolist \
    "单选框" 0 0 0 \
    "option1" "选项1" "on" \
    "option2" "选项2" "off"

单选框

Rangebox范围选择

通过--rangebox参数创建一个范围选择框,命令格式:--rangebox <text> <height> <width> <min-value> <max-value> <default-value>

参数名

参数用途

参考值

text

对话框标题

范围选择

height

对话框高度

0

width

对话框宽度

0

min-value

最小值

0

max-value

最大最

100

default-value

默认值

50

dialog --rangebox \
    "范围选择" 0 0 0 100 50

范围选择

Tailbox文件查看框

通过--tailbox参数创建一个文件查看框,用于显示文件内容,命令格式:--tailbox <file> <height> <width>

参数名

参数用途

参考值

file

文件名

/etc/issue

height

对话框高度

10

width

对话框宽度

25

dialog --tailbox \
    /etc/issue 10 25

文件查看框

Textbox文件查看框

通过--textbox参数创建一个文件查看框,用于显示文件内容,命令格式:--textbox <file> <height> <width>

参数名

参数用途

参考值

file

文件名

/etc/issue

height

对话框高度

10

width

对话框宽度

25

dialog --textbox \
    /etc/issue 10 25

文件查看框

Timebox时间选择框

通过--timebox参数创建一个时间选择框,命令格式:--timebox <text> <height> <width> <hour> <minute> <second>

参数名

参数用途

参考值

text

对话框标题

时间选择框

height

对话框高度

0

width

对话框宽度

0

hour

默认小时数

12

minute

默认分钟数

0

second

默认秒数

0

dialog --timebox \
    "时间选择框" 0 0 12 0 0

时间选择框

Treeview树状选择框

通过--treeview参数创建一个树状选择框,命令格式:--treeview <text> <height> <width> <list- height> <tag1> <item1> <status1> <depth1>...,其中tag1depth1共4个参数为一组,可以重复添加

参数名

参数用途

参考值

text

对话框标题

树状选择框

height

对话框高度

0

width

对话框宽度

0

list-height

列表高度

0

tag1

选项值,用于输出

option1

item1

选项名称,用于显示

选项1

status1

选项状态,是否选中

on/off

depth1

选项级别,设定选项处于第几层

0

dialog --treeview \
    "树状选择框" 0 0 0 \
    "option1" "选项1" "on" 0 \
    "option11" "选项11" "off" 1 \
    "option111" "选项111" "off" 2 \
    "option12" "选项12" "off" 1 \
    "option2" "选项2" "off" 0

树状选择框

Yesno确认对话框

通过--yesno参数创建一个确认对话框,命令格式:--yesno <text> <height> <width>

参数名

参数用途

参考值

text

对话框标题

确认对话框

height

对话框高度

0

width

对话框宽度

0

dialog --yesno \
    "确认对话框" 0 0

确认对话框

结尾

这篇文章到这里就结束了,感谢耐心阅读,如果遇到问题可以在下方评论区中讨论。

0

评论区