首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

《Linux命令行与shell脚本编程大全》 第十七章 学习札记

2013-09-07 
《Linux命令行与shell脚本编程大全》 第十七章 学习笔记第十七章:图形化桌面上的脚本编程 创建文本菜单创建

《Linux命令行与shell脚本编程大全》 第十七章 学习笔记

第十七章:图形化桌面上的脚本编程

 

创建文本菜单

创建菜单布局

创建菜单函数

只需把上面的代码用函数包起来即可

添加菜单逻辑

整合shell脚本菜单

首先添加case相应的实现函数

使用select命令

select命令允许从单个命令行创建菜单,然后再提取输入的答案并自动处理。

list参数是构成菜单的空格分割的文本选项列表。

select命令会在列表中将每个选项作为一个编好号的选项显示,然后为选项显示一个特殊的由PS3环境变量定义的提示符。(默认的提示符为#?)

注意:存储在变量中的结果是整个字符串,不是菜单选项前面的数字

 

使用窗口

安装dialog:sudo apt-get install dialog

dialog包

dialog部件

部件描述calendar提供选择日期的日历checklist显示多个选项(其中每一个选项都能打开或关闭)from构建一个表单(用标签和文本字段来填充)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命令会将数据发送到STDERR

msgbox部件

dialog --msgbox text height width

可以指定title

dialog --title Testing --msgbox "This is a test" 10 20

yesno部件

dialog --title "Do not lie to me" --yesno "Are you a girl?" 10 20

inputbox部件

dialog --title "Do not lie to me" --inputbox "Enter you age:" 10 20 2>age.txt

textbox部件

dialog --textbox /etc/passwd 15 45

可以显示大量文本,并且可以用方向键、Home、End、PgUp、PgDn等操作

menu部件

dialog --menu "Menu" 20 30 5 1 "A." 2 "B." 3 "C."

上面红色的参数表示菜单栏的高度为5个item高,前面两个参数是dialog的高和宽

fselect部件

dialog --title "select a file" --fselect /etc/ 10 50 2>file.txt

《Linux命令行与shell脚本编程大全》 第十七章 学习札记
dialog选项

选项描述--add-widget继续下个对话框,直到按下Esc或者Cancel--aspect ratio指定窗口宽度和高度的宽高比--backtitle title指定显示在屏幕顶部背景上的标题(2)--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按钮执行替代标签

(1)dialog命令支持运行时配置。dialog启动时先去检查是否设置了DIALOGRC环境变量,该变量保存配置文件路径。

如果没有找到,则使用$HOME/.dialogrc。如果这个也不存在,就尝查找编译时指定的GLOBALRC(/etc/dialogrc),如果这个也不存在,就用编译默认值。

(2)--backtitle选项是为了脚本中的菜单创建公共标题的简便办法。如果给每个对话窗口都指定了该选项,那么它在应用中将保持一致。

在脚本中使用dialog命令

这里需要注意两点:

1.如果有Cancel或者No按钮,检查dialog命令的退出状态码

2.重定向STDERR来获得输出值

下面是将之前的代码改用dialog实现

使用图形

KDE环境

安装kdialog

sudo apt-get install kdebase-bin

kdialog部件

和dialog类似,命令格式为:

kdialog display-options window-options arguments

window-options选项允许指定使用那种类型的窗口。

kdialog窗口选项

选项描述--checklist title [tag item status]多选列表菜单,状态会说明该选项是否被选定--error text错误消息框--inputbox text [init]输入文本框。可以用init指定默认值--menu title [tag item]带有标题的菜单选择框,以及用tag标识的选项列表--msgbox text显示指定文件的简单消息框--password text隐藏用户输入的密码输入文本框--radiolist title [tag item status]单选列表菜单,状态会说明该选项是否被选定--separate-output为多选列表和单选列表菜单返回按行分开的选项--sorry text“抱歉”消息框--textbox file [width] [height]显示file的内容的文本框,另外指定了width和height--title title为对话窗口的TitleBar区域指定一个标题--warningyesno text带有Yes和No按钮的警告消息框--warningcontinuecancel text带有Continue和Cancel按钮的警告消息框--warningyesnocancel text带有Yes、No和Cancel按钮的警告消息框--yesno text带有Yes和No按钮的提问框--yesnocancel text带有Yes、No和Cancel按钮的提问框

checklist和radiolist允许你在列表中定义单独的选项以及他们默认是否选定

使用kdialog

kdialog与dialog最大的不同就是kdialog将输出重定向到了STDOUT中。

GNOME环境

zenity部件

zenity窗口部件

选项描述--calendar显示整月日历--entry显示文本输入对话窗口--error显示错误消息对话窗口--file-selection显示完整的路径名和文件名对话窗口--info显示信息对话窗口--list显示多选列表或单选列表对话窗口--notification显示通知图标--process显示进度条对话窗口--question显示yes/no对话窗口--scale显示可调整大小的窗口--text-info显示含有文本的文本框--warning显示警告对话窗口

zenity提供的窗口就比之前的dialog效果好多了

zenity --calendar

当选择了日期之后,zenity会将值返回到STDOUT中,和kdialog一样

《Linux命令行与shell脚本编程大全》 第十七章 学习札记

在脚本中使用zenity


《Linux命令行与shell脚本编程大全》 第十七章 学习札记

 

转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

热点排行