很多人误以为shell脚本只能在命令行下使用。其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等。你可以控制最终的输出,光标位置还有各种输出效果。下面我将介绍一些工具,帮助你创建强大的,互动的,用户友好的 Unix/Linux shell脚本。我在FreeBSD和Linux下测试过这些工具,不过其他UNIX系列的操作系统应该都支持的。
1. notify-send 命令
这个命令可以让你通过通知进程发送一个桌面通知给用户。这可以用来向用户发送提示,或者显示一些信息而不用打断用户工作。你需要安装如下软件包:
1 | $ sudo apt-get install libnotify-bin |
下面这个例子展示了如何从命令行向桌面发送一个简单的消息:
1 | notify-send "rsnapshot done :)" |
输出:
下面是一个复杂一点的例子:
3 | live=$(lynx --dump http://money.rediff.com/ | grep "BSE LIVE" | awk "{ print $5}" | sed "s/,//g;s/.[0-9]*//g") |
4 | [ $notify_counter -eq 0 ] && [ $live -ge $alert ] && { notify-send -t 5000 -u low -i "BSE Sensex touched 18k"; notify_counter=1; } |
输出:
这里的参数解释如下:
- -t 5000:指定超时的时间,毫秒
- -u low:设置是否紧急
- -i gtk-dialog-info:通知图标,你可以指定图标 -i /path/to/your-icon.png
2. tput 命令
这个命令是用来设置终端特性的:
- 移动光标
- 获得终端信息
- 设置前景和背景色
- 设置粗体模式
- 设置反模式等等
举例:
17 | echo "M A I N - M E N U" |
21 | echo "1. User Management" |
24 | echo "2. Service Management" |
27 | echo "3. Process Management" |
35 | read -p "Enter your choice [1-4] " choice |
输出:
3. setleds 命令
这个命令可以让你控制键盘灯,例如打开数字键盘灯:
关闭数字键盘灯:
- -caps: 清除大写灯
- +caps:打开大写灯
- -scroll:清除滚动锁
- +scroll:打开滚动锁
4. zenity 命令
这个命令可以显示GTK+的对话框,然后返回用户的输入。你可以用这个命令在脚本中显示信息,并要求用户输入信息。下面这段代码就是域名的whois查询:
03 | _zenity="/usr/bin/zenity" |
04 | _out="/tmp/whois.output.$$" |
05 | domain=$(${_zenity} --title "Enter domain" |
06 | --entry --text "Enter the domain you would like to see whois info" ) |
11 | whois $domain | tee >(${_zenity} --width=200 --height=100 |
12 | --title="whois" --progress |
13 | --pulsate --text="Searching domain info..." |
14 | --auto-kill --auto-close |
15 | --percentage=10) >${_out} |
18 | ${_zenity} --width=800 --height=600 |
19 | --title "Whois info for $domain" |
20 | --text-info --filename="${_out}" |
23 | --text="No input provided" |
输出:
Ubuntu 11.10配置Modlesim 6.5Cgroup和LXC(Linux container)安装详解(CentOS 6.2) 系统相关资讯 Sell 本文评论 查看全部评论 (0)