❀dialog命令运用于linux❀

目录

❀dialog命令运用于linux❀

msgbox部件(消息框)

yesno部件(yesno框)

inputbox部件(输入文本框)

textbox部件(文本框)

fselect部件(文件选框)

passwordbox部件(密码框)

checklist部件(复选框)

calendar部件(显示日历)

gauge部件(进度框架)

form部件(表单)

综合应用示例


❀dialog命令运用于linux❀

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

(ps.dialog实用程序是基于ncurses库的。Ncurses是一个用于在文本终端上创建图形用户界面的库,它允许开发者创建基于文本的用户界面,而无需依赖图形环境或窗口系统。这使得ncurses库非常适合在命令行环境下创建交互式的用户界面。dialog实用程序利用ncurses库提供的功能,允许用户在终端中以对话框的形式进行交互。它可以用于创建各种对话框,如菜单、输入框、消息框等,使得用户能够在命令行环境下进行简单的图形化交互操作。Ncurses通常被发音为 "en-curses"。 "en" 是字母 "n" 的读音,而 "curses" 的发音类似于英文中的 "curses"。因此,它的发音类似于 "en-curses"。)  

基本语法:通用选项 common options:(这个选项来设置dialog box的背景,颜色和标题等)[--title <title>] 指定将在对话框的上方显示的标题字符串 

通用选项:

[ --backtitle ]  背景的标题

[--title ]   标题

[--stdout ]   改为正常输出流,可以使用变量获dialog命令的执行结果,dialog的默认输出流为2>

[--insecure ]  不安全的,显示星号(可以看到密码位数)

[--begin y x ]   窗体左上角处于屏幕的位置 例:--begin 4 10

[--colors ]     文本的颜色:0-7,1表示红色 ;\Z开始 ;\Zn结束

[--defaultno ]   默认为no yesno标签,对于yesno窗体类型,光标默认在no标签上

[--default-item string ]   默认条目,menu窗体类型中使用

[--nocancel ]           取消cancel键

[ --nook ]              取消ok键

[ --no-shadow ]         取消阴影

[ --ok-label string ]       OK标签上不显示OK,而显示你输入的文本信息

[ --exit-label string ]     可以添加一个exit的标签

[ --timeout secs ]         超时时间间隔,秒

[ --extra-button ]      多添加一个按钮

[ --extra-labrl string ]   新增按钮上显示的内容,那这个按钮的功能这需要自己实现?用不来

部 件 描 述

----------------------------------------------------------------

calendar 提供选择日期的日历

checklist 显示多个选项(其中每个选项都能打开或关闭

form 构建一个带有标签以及文本字段可以填写内容)的表单

fselect 提供一个文件选择窗口来浏览选择文件

gauge  显示完成的百分比进度条

infobox 显示一条消息,但不用等待回应

inputbox 提供一个输入文本用的文本表单

inputmenu  提供一个可编辑的菜单

menu 显示可选择的一系列选项

msgbox 显示一条消息,并要求用户选择OK按钮

pause 显示一个进度条来显示暂定期间的状态

passwordbox 显示一个文本框,但会隐藏输入的文本

passwordform  显示一个带标签隐藏文本字段的表单

radiolist  提供一组菜单选项,但只能选择其中一个

tailbox  用tail命令在滚动窗口中显示文件的内容

tailboxbg  跟tailbox一样,但是在后台模式中运行

textbox  在滚动窗口中显示文件的内容

timebox  提供一个选择小时、分钟和秒数的窗口

yesno 提供一条带有Yes和No按钮的简单消息

要在命令行上指定某个特定的部件,需使用双破折线格式。

dialog --widget parameters

widget是部件名, parameters定义了部件窗口的大小以及部件需要的文本。每个dialog部件都提供了两种形式的输出:

①使用STDERR

②使用退出状态码

可以通过dialog命令的退出状态码来确定用户选择的按钮。如果选择了Yes或OK按钮,dialog命令会返回退出状态码0。如果选择了Cancel或No按钮,dialog命令会返回退出状态码1。可以用标准的$?变量来确定dialog部件中具体选择了哪个按钮。

如果部件返回了数据,比如菜单选择,那么dialog命令会将数据发送到STDERR。可以用标准的bash shell方法来将STDERR输出重定向到另一个文件或文件描述符中。

dialog --inputbox "Enter your age:" 10 20 2>age.txt

一些其他的选项描述:

--add-widget 继续下个对话框,直到按下Esc或Cancel按钮

--aspect ratio 指定窗口宽度和高度的宽高比

--backtitle title 指定显示在屏幕顶部背景上的标题

--begin x y 指定窗口左上角的起始位置

--cancel-label label 指定Cancel按钮的替代标签

--clear 用默认的对话背景色来清空屏幕内容

--colors 在对话文本中嵌入ANSI色彩编码

--cr-wrap 在对话文本中允许使用换行符并强制换行

--create-rc file 将示例配置文件的内容复制到指定的file文件中(1)

--defaultno 将yes/no对话框的默认答案设为No

--default-item string 设定复选列表、表单或菜单对话中的默认项

--exit-label label 指定Exit按钮的替代标签

--extra-button 在OK按钮和Cancel按钮之间显示一个额外按钮

--extra-label label 指定额外按钮的替代标签

--help 显示dialog命令的帮助信息

--help-button 在OK按钮和Cancel按钮后显示一个Help按钮

--help-label label 指定Help按钮的替代标签

--help-status 当选定Help按钮后,在帮助信息后写入多选列表、单选列表或表单信息

--ignore 忽略dialog不能识别的选项

--input-fd fd 指定STDIN之外的另一个文件描述符

--insecure 在password部件中键入内容时显示星号

--item-help 为多选列表、单选列表或菜单中的每个标号在屏幕的底部添加一个帮助栏

--keep-window 不要清除屏幕上显示过的部件

--max-input size 指定输入的最大字符串长度。默认为2048

--nocancel 隐藏Cancel按钮

--no-collapse 不要将对话文本中的制表符转换成空格

--no-kill 将tailboxbg对话放到后台,并禁止该进程的SIGHUP信号

--no-label label 为No按钮指定替代标签

--no-shadow 不要显示对话窗口的阴影效果

--ok-label label 指定OK按钮的替代标签

--output-fd fd 指定除STDERR之外的另一个输出文件描述符

--print-maxsize 将对话窗口的最大尺寸打印到输出中

--print-size 将每个对话窗口的大小打印到输出中

--print-version 将dialog的版本号打印到输出中

--separate-output 一次一行地输出checklist部件的结果,不使用引号

--separator string 指定用于分隔部件输出的字符串

--separate-widget string 指定用于分隔部件输出的字符串

--shadow 在每个窗口的右下角绘制阴影

--single-quoted 需要时对多选列表的输出采用单引号

--sleep sec 在处理完对话窗口之后延迟指定的秒数

--stderr 将输出发送到STDERR(默认行为)

--stdout 将输出发送到STDOUT

--tab-correct 将制表符转换成空格

--tab-len n 指定一个制表符占用的空格数(默认为8)

--timeout sec 指定无用户输入时, sec秒后退出并返回错误代码

--title title 指定对话窗口的标题

--trim 从对话文本中删除前导空格和换行符

--visit-items 修改对话窗口中制表符的停留位置,使其包括选项列表

--yes-label label 为Yes按钮指定替代标签

实例:

msgbox部件(消息框)

msgbox部件是对话框中最常见的类型。它会在窗口中显示一条简单的消息,直到用户单击OK按钮后才消失。使用msgbox部件时要用下面的格式。

dialog --msgbox text height width

如果想在窗口顶部放一个标题,也可以用 --title参数,后接作为标题的文本。

# dialog --title "标题" --msgbox "这是文本内容~" 10 25

yesno部件(yesno框)

yesno部件进一步扩展了msgbox部件的功能,允许用户对窗口中显示的问题选择yes或no。它会在窗口底部生成两个按钮:一个是Yes,一个是No。用户可以用鼠标、制表符键或者键盘方向键来切换按钮。要选择按钮的话,用户可以按下空格键或者回车键

如果用户选择了No按钮,退出状态码是1;如果选择了Yes按钮,退出状态码就是0

# dialog --title "标题" --yesno "yes还是no?" 10 25;echo $?

选择no退出状态码是1:

选择yes退出状态码是0:

inputbox部件(输入文本框)

inputbox部件为用户提供了一个简单的文本框区域来输入文本字符串。 dialog命令会将文本字符串的值发给STDERR。你必须重定向STDERR来获取用户输入。

inputbox提供了两个按钮: OK和Cancel。如果选择了OK按钮,命令的退出状态码就是0;反之,退出状态码就会是1。

# dialog --inputbox "Enter your age:" 10 25 2>age.txt;echo $?

# cat age.txt

21

还可以直接在前面加一个参数--stdout,直接改为正常输出流,可以使用变量获dialog命令的执行结果:

# dialog --stdout --inputbox "Enter your age:" 10 25 >age1.txt;echo $?

# cat age1.txt

23

textbox部件(文本框)

textbox部件是在窗口中显示大量信息的极佳办法。它会生成一个滚动窗口来显示由参数所指定的文件中的文本。

# dialog --textbox /etc/passwd 15 45

# dialog --menu "Sys Admin Menu" 20 30 10 1 "Display disk space" 2 "Display users" 3 "Display memory usage" 4 "Exit" 2> test.txt

fselect部件(文件选框)

fselect部件在处理文件名时非常方便。不用强制用户键入文件名,你就可以用fselect部件来浏览文件的位置并选择文件。

fselect选项后的第一个参数是窗口中使用的起始目录位置。 fselect部件窗口由左侧的目录列表右侧的文件列表

# dialog --title "Select a file" --fselect $HOME/ 10 50 2>file.txt

passwordbox部件(密码框)

格式: dialog  --passwordbox text height width [init]

# dialog --title "Password"  --passwordbox "Please give a password for the new user:" 10 35

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

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

# dialog  --title  "Password"  --insecure  --passwordbox  "Please  give  a  password  for the  new  user:"  10  30

checklist部件(复选框)

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

例子:

# dialog --stdout --backtitle "Checklist" --checklist "Test" 20 50 10 Memory Memory_Size 1 Dsik Disk_Size 2

calendar部件(显示日历)

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

例子:

#  dialog --title "Calendar" --calendar "Date" 5 50  #显示当前日期


#  dialog --title "Calendar" --calendar "Date" 5 50 1 2 2013  #显示指定日期

gauge部件(进度框架)

格式:dialog --gauge text height width  [<percent>]

例子:

#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  #实时动度进度

编辑一个gauge.sh 的脚本内容如下: 

#!/bin/bash       # 指定脚本使用的解释器为 Bash
declare -i PERCENT=0   #定义一个整型变量 PERCENT 并初始化为 0(    #开始一个子 shellfor I in /etc/*;do    #遍历 /etc 目录下的所有文件if [ $PERCENT -le 100 ];then    #如果进度条未达到 100%,则执行以下命令cp -r $I /tmp/test 2> /dev/null#将当前文件复制到 `/tmp/test` 目录中,忽略错误信息echo "XXX"   #输出分隔符echo "Copy the file $I ..."      #输出正在复制的文件名echo "XXX"     #输出分隔符echo $PERCENT    #输出当前进度百分比filet PERCENT+=1   # 将进度百分比加 1sleep 0.1    #等待 0.1 秒done  #结束循环
) | dialog --title "coping" --gauge "starting to copy files..." 6 50 0  
# )  结束子 shell
# | 将子 shell 的输出传递给下一个命令
#显示进度条对话框,标题为 "coping",提示信息为 "starting to copy files...",大小为 6 行 50 列,初始进度为 0

form部件(表单)

格式:dialog --form text height width formheight [ label y x item y x flen ilen ] ...其中 flen 表示field length,定义了:选定字段中显示的长度 ilen 表示 input-length, 定义了:在外地输入的数据允许的长度 使用up/down(或ctrl/ N,ctrl/ P)在使用领域之间移动。使用tab键在窗口之间切换。

例子:

# dialog --title "Add a user" --form "Please input the infomation of new user:" 12 40 4  "Username:" 1  1 "" 1  15  15  0  "Full name:" 2  1 "" 2  15  15  0  "Home Dir:" 3  1 "" 3  15  15  0  "Shell:"    4   1 "" 4  15  15  0   

1)dialog启动时会先去检查是否设置了DIALOGRC环境变量,该变量会保存配置文件名信息。如果未设置该变量或未找到该文件,它会将$HOME/.dialogrc作为配置文件。如果这个文件还不存在的话,就尝试查找编译时指定的GLOBALRC文件,也就是/etc/dialogrc。如果这个文件也不存在的话,就用编译时的默认值。

2)--backtitle选项是为脚本中的菜单创建公共标题的简便办法。如果你为每个对话窗口都指定了该选项,那么它在你的应用中就会保持一致,这样会让脚本看起来更专业。

综合应用示例

#!/bin/bashyesno() {dialog --title "First screen" --backtitle "Test Program" --clear --yesno \"Start this test program or not ? \nThis decesion have to make by you. " 16 51# yes is 0, no is 1 , esc is 255result=$?if [ $result -eq 1 ] ; thenexit 1;elif [ $result -eq 255 ]; thenexit 255;fiusername
}username() {cat /dev/null >/tmp/test.usernamedialog --title "Second screen" --backtitle "Test Program" --clear --inputbox \"Please input your username (default: hello) " 16 51 "hello" 2>/tmp/test.usernameresult=$?if [ $result -eq 1 ] ; thenyesnoelif [ $result -eq 255 ]; thenexit 255;fipassword
}
password() {cat /dev/null >/tmp/test.passworddialog --insecure --title "Third screen" --backtitle "Test Program" --clear --passwordbox \"Please input your password (default: 123456) " 16 51 "123456" 2>/tmp/test.passwordresult=$?if [ $result -eq 1 ] ; thenusernameelif [ $result -eq 255 ]; thenexit 255;fioccupation
}
occupation() {cat /dev/null >/tmp/test.occupationdialog --title "Forth screen" --backtitle "Test Program" --clear --menu \"Please choose your occupation: (default: IT)" 16 51 3 \IT "The worst occupation" \CEO "The best occupation" \Teacher "Not the best or worst" 2>/tmp/test.occupationresult=$?if [ $result -eq 1 ] ; thenpasswordelif [ $result -eq 255 ]; thenexit 255;fifinish
}
finish() {dialog --title "Fifth screen" --backtitle "Test Program" --clear --msgbox \"Congratulations! The test program has finished!\n Username: $(cat /tmp/test.username)\n Password: $(cat /tmp/test.password)\n Occupation: $(cat /tmp/test.occupation)" 16 51result=$?if [ $result -eq 1 ] ; thenoccupationelif [ $result -eq 255 ]; thenexit 255;fi
}
yesno

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/197819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哈希与哈希表

哈希表的概念 哈希表又名散列表&#xff0c;官话一点讲就是&#xff1a; 散列表&#xff08;Hash table&#xff0c;也叫哈希表&#xff09;&#xff0c;是根据关键码值(Key value)而直接进行访问的数据结构。也就是说&#xff0c;它通过把关键码值映射到表中一个位置来访问记…

线程变量引发的session混乱问题

最近不是在救火&#xff0c;就是在救火的路上。 也没什么特别可写的&#xff0c;今天记录下最近遇到的一个问题&#xff0c;个人觉得挺有意思&#xff0c; 待有缘人阅读 言归正传&#xff0c;售后反馈&#xff1a; 营业查询中付款方式为第三方支付的几条银行缴费&#xff0c;创…

ai绘画Midjourney绘画提示词Prompt教程

一、Midjourney绘画工具 SparkAi【无需魔法使用】&#xff1a; SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&#xff01;本系统使用NestjsVueTypescript框架技术&#xff0c;持续集成AI能力到…

成为AI产品经理——模型稳定性评估(PSI)

一、PSI作用 稳定性是指模型性能的稳定程度。 上线前需要进行模型的稳定性评估&#xff0c;是否达到上线标准。 上线后需要进行模型的稳定性的观测&#xff0c;判断模型是否需要迭代。 稳定度指标(population stability index ,PSI)。通过PSI指标&#xff0c;我们可以获得不…

Windows使用Redis

Windows使用Redis 前言一、安装wsl2&#xff08;Windows Subsystem for Linux&#xff09;二、在wsl中下载并安装Redis一主二仆哨兵模式 前言 主要是记录一下&#xff0c;免得自己忘了。 一、安装wsl2&#xff08;Windows Subsystem for Linux&#xff09; Redis官网中说&…

GitHub上1.5K标星的QA和软件测试学习路线图

​最近在GitHub上发现一个项目&#xff0c;项目描述了作为QA工程师&#xff0c;进行软件测试技能提升时的&#xff0c;建议的软件测试学习顺序图​。 虽然2021年起就不再更新了&#xff0c;但是居然有1.5K的​星。 整个项目有两个部分​&#xff1a; ​1.QA和软件测试学习顺序…

craco + webpack 4 升 5

craco webpack 4 升 5 更新包版本尝试build升级其他依赖库使用process插件打印进度信息到底需要多少内存分析构建产出添加 splitChunk总结记录一些好文章&#xff1a; 我的项目使用 craco react 开发 我的 package.json {// ......"dependencies": {"ant-desi…

沐风老师3DMAX拼图随机生成器Puzzle建模工具使用教程

3DMAX拼图随机生成器Puzzle建模工具使用教程 3DMAX拼图随机生成器Puzzle&#xff0c;是一款用MAXScript脚本语言开发的3dsMax小工具&#xff0c;可以随机创建可编辑多边形3D拼图对象。可批量生成阵列。 【适用版本】 3dMax2015-2024&#xff08;不仅限于此范围&#xff09; 【…

前端大文件上传webuploader(react + umi)

使用WebUploader还可以批量上传文件、支持缩略图等等众多参数选项可设置&#xff0c;以及多个事件方法可调用&#xff0c;你可以随心所欲的定制你要的上传组件。 分片上传 1.什么是分片上传 分片上传&#xff0c;就是将所要上传的文件&#xff0c;按照一定的大小&#xff0c;将…

Langchain-Chatchat的安装过程

参考&#xff1a;LLMs之RAG&#xff1a;LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs多款embe_一个处女座的程序猿的博客-CSDN博客 1、安装过程中出现了 GPU驱动版本 是11.8 而 python -c "…

探索人工智能领域——每日20个名词详解【day8】

目录 前言 正文 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如需转载&#xff0c;请事先与我联系以…

学习使用三个命令实现在腾讯云服务器TencentOS Server 3.1或者CentOS 8上安装ffmpeg

学习使用三个命令实现在腾讯云服务器TencentOS Server 3.1或者CentOS 8上安装ffmpeg Error: Unable to find a match: ffmpeg添加RPMfusion仓库安装SDL安装ffmpeg执行命令测试 Error: Unable to find a match: ffmpeg 添加RPMfusion仓库 yum install https://download1.rpmfus…

[Java学习日记]多线程练习、线程池

目录 一.案例&#xff1a;五个人抢红包 二.案例&#xff1a;两个抽奖池抽奖 三.案例&#xff1a;两个抽奖池抽奖&#xff1a;获取线程运行的结果 四.线程池&#xff1a;用来存放线程&#xff0c;避免多次重复创建线程 五.自定义线程池 六.最大并行数与线程池大小 一.案例&…

【EI会议征稿】第九届电气、电子和计算机工程研究国际学术研讨会 (ISAEECE 2024)

第九届电气、电子和计算机工程研究国际学术研讨会 (ISAEECE 2024) 2024 9th International Symposium on Advances in Electrical, Electronics and Computer Engineering 第九届电气、电子和计算机工程研究国际学术研讨会(ISAEECE 2024&#xff09;将于2024年3月1-5日在南京…

AWS攻略——创建VPC

文章目录 创建一个可以外网访问的VPCCIDR主路由表DestinationTarget 主网络ACL入站规则出站规则 子网创建EC2测试连接创建互联网网关&#xff08;IGW&#xff09;编辑路由表 知识点参考资料 在 《AWS攻略——VPC初识》一文中&#xff0c;我们在AWS默认的VPC下部署了一台可以SS…

鸿蒙4.0开发笔记之ArkTS装饰器语法基础之监听者模式@Watch案例讲解(十四)

1、Watch定义 Watch实际是指状态变量更改通知。如果开发者需要关注某个状态变量的值是否改变&#xff0c;可以使用Watch为状态变量设置回调函数&#xff08;监听函数&#xff09;。 Watch用于监听状态变量的变化&#xff0c;当状态变量变化时&#xff0c;Watch的回调方法将被…

隐写术和人工智能

在一项新的研究中&#xff0c;人工智能对齐研究实验室 Redwood Research 揭示了大型语言模型 (LLM) 可以掌握“编码推理”&#xff0c;这是一种隐写术形式。 这种有趣的现象使得大型语言模型能够以人类读者无法理解的方式巧妙地将中间推理步骤嵌入到生成的文本中。 大型语言…

C++初阶 | [七] string类(上)

摘要&#xff1a;标准库中的string类的常用函数 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c; 但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP(面向对象)的思想&#…

03、pytest初体验

官方实例 # content of test_sample.py def func(x):return x 1def test_ansewer():assert func(3) 5步骤解释 [100%]指的是所有测试用例的总体进度&#xff0c;完成后&#xff0c;pytest显示一个失败报告&#xff0c;因为func(3)没有返回5 注意&#xff1a;你可以使用ass…

【滤波第二期】中值滤波的原理和C代码

中值滤波是一种非线性数字滤波技术&#xff0c;主要应用于信号处理和图像处理领域&#xff0c;用于减小信号中的噪声和离群值。中值滤波的核心思想是通过计算一组数据点的中间值&#xff0c;以抑制脉冲噪声等离群值的影响&#xff0c;从而实现信号的平滑处理。 1&#xff0c;中…