手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

10个工具让你的 Sell 脚本更强大

[日期:2012-02-28] 来源:oschina  作者:虫虫 [字体: ]
很多人误以为shell脚本只能在命令行下使用。其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等。你可以控制最终的输出,光标位置还有各种输出效果。下面我将介绍一些工具,帮助你创建强大的,互动的,用户友好的 Unix/Linux shell脚本。我在FreeBSD和Linux下测试过这些工具,不过其他UNIX系列的操作系统应该都支持的。

1. notify-send 命令
这个命令可以让你通过通知进程发送一个桌面通知给用户。这可以用来向用户发送提示,或者显示一些信息而不用打断用户工作。你需要安装如下软件包:
 
1 $ sudo apt-get install libnotify-bin
下面这个例子展示了如何从命令行向桌面发送一个简单的消息:
 
1 notify-send "rsnapshot done :)"
输出:


下面是一个复杂一点的例子:
 
1 ....
2 alert=18000
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; }
5 ...
输出:


这里的参数解释如下:
  •  -t 5000:指定超时的时间,毫秒
  •  -u low:设置是否紧急
  •  -i gtk-dialog-info:通知图标,你可以指定图标 -i /path/to/your-icon.png

2. tput 命令
这个命令是用来设置终端特性的:
  •   移动光标
  •   获得终端信息
  •   设置前景和背景色
  •   设置粗体模式
  •   设置反模式等等
举例:
 
01 #!/bin/bash
02    
03 # clear the screen
04 tput clear
05    
06 # Move cursor to screen location X,Y (top left is 0,0)
07 tput cup 3 15
08    
09 # Set a foreground colour using ANSI escape
10 tput setaf 3
11 echo "XYX Corp LTD."
12 tput sgr0
13    
14 tput cup 5 17
15 # Set reverse video mode
16 tput rev
17 echo "M A I N - M E N U"
18 tput sgr0
19    
20 tput cup 7 15
21 echo "1. User Management"
22    
23 tput cup 8 15
24 echo "2. Service Management"
25    
26 tput cup 9 15
27 echo "3. Process Management"
28    
29 tput cup 10 15
30 echo "4. Backup"
31    
32 # Set bold mode
33 tput bold
34 tput cup 12 15
35 read -p "Enter your choice [1-4] " choice
36    
37 tput clear
38 tput sgr0
39 tput rc
输出:


3. setleds 命令
这个命令可以让你控制键盘灯,例如打开数字键盘灯:
 
1 setleds -D +num
关闭数字键盘灯:
 
1 setleds -D -num
  •   -caps: 清除大写灯
  •   +caps:打开大写灯
  •   -scroll:清除滚动锁
  •   +scroll:打开滚动锁

4. zenity 命令
这个命令可以显示GTK+的对话框,然后返回用户的输入。你可以用这个命令在脚本中显示信息,并要求用户输入信息。下面这段代码就是域名的whois查询:
 
01 #!/bin/bash
02 # Get domain name
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" )
07    
08 if [ $? -eq 0 ]
09 then
10   # Display a progress dialog while searching whois database
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}
16    
17   # Display back output
18   ${_zenity} --width=800 --height=600  \
19          --title "Whois info for $domain" \
20          --text-info --filename="${_out}"
21 else
22   ${_zenity} --error \
23          --text="No input provided"
24 fi
输出:

Fig.04: zenity in Action linux
相关资讯       Sell 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款