目录
- select
- dialog
- tput
- notify-send
- kdialog
- zenity
select
select命令可以创建很简单的菜单,然后获取输入的答案.
select命令的格式为:
select variable in list
docommands
done
其中list参数是由空格分隔的文本选项列表,这些列表构成了整个菜单. select命令会将每个列表现实成一个带编号的选项,然后为选项显示一个由PS3环境变量定义的提示符.
例如我们可以创建一个简单的文件选择脚本:
if [ $# -eq 0 ];thenfile=$(pwd)
elsefile=$1
fiif [ -d $file ];thenselect f in $(ls $file)doexec $0 $file/$fdone
elseecho $file
filujun9972@lujun9972-desktop:~$ file_selector.sh bin1) - 17) git-sync.sh2) autoload 18) mail2org.sh3) cleanFiles.pl 19) mgrep.sh4) develop 20) monitor_network.sh5) dired.sh 21) mpg123.sh6) download_comic_from_avbebe.sh 22) my-byte-split.sh7) ec 23) my-line-split.sh8) ediff.sh 24) pick.sh9) emacsclient.sh 25) ptree.sh
10) emages.sh 26) rcsvi.sh,v
11) es 27) redo.sh
12) eshell.sh 28) shr
13) et 29) testClean.cfg
14) file_selector.sh 30) vir
15) gclsg.lisp.tw 31) wget-website.sh
16) git-push.sh
#? 2
1) git-pull.sh
2) study.sh
#? 1
bin/autoload/git-pull.sh
dialog
dialog能够使用ANSI转义控制字符从文本环境创建标准的窗口对话框.
下面是用用dialog来重写的file_selector.sh
if [ $# -eq 0 ];thenfile=$(pwd)
elsefile=$1
fifile=$(dialog --title "file selector" --stdout --fselect $file 10 50)if [ -d $file ];thenexec $0 $file
elseecho $file
fi
tput
tput 命令将通过 terminfo 数据库对您的终端会话进行初始化和操作.
通过使用 tput,您可以更改几项终端功能:如移动或更改光标、更改文本属性,以及清除终端屏幕的特定区域等.
下面是一个例子:
#!/bin/bashBOLD=$(tput bold)
REV=$(tput rev)
NORMAL=$(tput sgr0)
CURSOR_OFF=$(tput civis)
CURSOR_ON=$(tput cnorm)tput inittput clear
echo $CURSOR_OFF
tput cup 2 15
echo "${BOLD}粗体效果{NORMAL}\n"
echo "${REV}反转效果${NORMAL}"
echo $CURSOR_ON
notify-send
notify-send让你通过通知进程发送一个桌面通知给用户.
例如下面是一个检测网络的脚本.
#!/bin/bash
target="www.baidu.com"
port=80
interval=60 # 秒function live_p()
{local remote=$1local port=$2if timeout 5 echo >/dev/tcp/$remote/$port;thenecho "网络通了!"elseecho "网络不通了!"fi
}while :
docurrent_state=$(live_p $target $port)if [ "$current_state" != "$old_state" ];thennotify-send $current_statefiold_state=$current_state;sleep $interval
done
网络不通的情况下,它会显示一个窗口告诉你”网络不通了!”,网络恢复之后,它又会显示一个窗口告诉你”网络通了”
kdialog
kdialog为KDE桌面提供了类似dialog式的标准窗口. 其生成的窗口能和其他KDE窗口很好的融合.
关于kdialog的使用方法可以参见https://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs
kdialog的file_selector.sh可以是这样的
if [ $# -eq 0 ];thenfile=$(pwd)
elsefile=$1
fiif [ -d $file ];thenfile=$(kdialog --getopenfilename $file)
fi
echo $file
zenity
zenity 是gnome版的dialog. 它针对不同的对话框选项有不同的参数:
对话框选项
- –calendar: 显示日历对话框
- –entry: 显示文字输入栏对话框
- –error: 显示错误信息对话框
- –file-selection: 显示文件选择对话框
- –info: 显示信息对话框
- –list: 显示清单对话框
- –progress: 显示进度指示窗
- –question: 显示提问信息对话框
- –text-info: 显示文字资信对话框
- –warning: 显示警告信息对话框
一般选项
- –title=标题: 指定对话框的标题
- –window-icon=图示路径: 指定视窗使用的图示
- –width=宽度: 指定宽度
- –height=高度: 指定高度
日历选项
- –text=STRING: 指定对话框中的文字
- –day=INT: 指定日历中的日期
- –month=INT: 指定日历中的月份
- –year=INT: 指定日历中的年份
- –date-format=STRING: 指定回传的日期格式
文字输入栏选项
- –text=STRING: 指定对话框中的文字
- –entry-text=STRING: 指定输入栏中的文字
- –hide-text: 隐藏输入栏中的文字
错误信息选项
- –text=STRING: 指定对话框中的文字
有关文件选择的选项
- –filename=文件名称: 指定文件名称
- –multiple: 允许同时选择多个文件
- –separator=分隔字符: 指定分隔输出结果的字符。
信息选项
- –text=STRING: 指定对话框中的文字
清单选项
- –column=STRING: 指定栏位标题
- –checklist: 第一栏使用独立选择按钮
- –radiolist: 第一栏使用多项选择按钮
- –separator=分隔字符: 指定分隔输出结果的字符
- –editable: 可以更改文字
进度选项
- –text=STRING: 指定对话框中的文字
- –percentage=INT: 指定开始时的百份比数值
- –pulsate: 填满进度列
- –auto-close: 当进度达到100% 时关闭对话框
提问选项
- –text=STRING: 指定对话框中的文字
文字选项
- –filename=文件名称: 从文件中载入文本
- –editable: 可以更改文字
警告信息选项
- –text=STRING: 指定对话框中的文字
GTK+ 选项
- –gdk-debug=标签: 准备设定的gdk 调试标签
- –gdk-no-debug=标签: 准备去除的gdk 调试标签
- –display=画面: 准备使用的 X 画面
- –sync: 进行 X 同步呼叫
- –name=名称: 视窗总管所需的程式名称
- –class=类别: 视窗总管所需的程式类别名称
–gxid-host=主机
–gxid-port=端口号
- –gtk-debug=标签: 准备设定的gtk+ 调试标签
- –gtk-no-debug=标签: 准备去除的gtk+ 调试验标签
- –g-fatal-warnings: 将所有警告信息作为严重错误处理
- –gtk-module=模块: 载入额外的 Gtk 模块
zennity版本的file_selector.sh是这样的
if [ $# -eq 0 ];thenfile=$(pwd)
elsefile=$1
fiif [ -d $file ];thencd $filefile=$(zenity --file-selection)
fi
echo $file