8.4. whiptail - display dialog boxes from shell scripts

8.4.1. --msgbox

whiptail --title "Example Dialog" --msgbox "This is an example of a message box. You must hit OK to continue." 8 78
			
 ┌─────────────────────────────┤ Example Dialog ├─────────────────────────────┐
 │                                                                            │
 │ This is an example of a message box. You must hit OK to continue.          │
 │                                                                            │
 │                                                                            │
 │                                   <Ok>                                     │
 │                                                                            │
 └────────────────────────────────────────────────────────────────────────────┘ 

8.4.2. --infobox

whiptail --title "Example Dialog" --infobox "This is an example of a message box. You must hit OK to continue." 8 78
			

8.4.3. --yesno

例 8.1. whiptail - yesno

#! /bin/bash
# http://archives.seul.org/seul/project/Feb-1998/msg00069.html
if (whiptail --title "PPP Configuration" --backtitle "Welcome to SEUL" --yesno "
Do you want to configure your PPP connection?"  10 40 )
then
        echo -e "\nWell, you better get busy!\n"
elif    (whiptail --title "PPP Configuration" --backtitle "Welcome to
SEUL" --yesno "           Are you sure?" 7 40)
        then
                echo -e "\nGood, because I can't do that yet!\n"
        else
                echo -e "\nToo bad, I can't do that yet\n"
fi
				
whiptail --title "Example Dialog" --yesno "This is an example of a yes/no box." 8 78

exitstatus=$?
if [ $exitstatus = 0 ]; then
    echo "User selected Yes."
else
    echo "User selected No."
fi

echo "(Exit status was $exitstatus)"
				

设置--yes-button,--no-button,--ok-button 按钮的文本

whiptail --title "Example Dialog" --yesno "This is an example of a message box. You must hit OK to continue." 8 78 --no-button 取消 --yes-button 确认
			

8.4.4. --inputbox

例 8.2. whiptail - inputbox

result=$(tempfile) ; chmod go-rw $result
whiptail --inputbox "Enter some text" 10 30 2>$result
echo Result=$(cat $result)
rm $result
				
                         ┌────────────────────────────┐
                         │ Enter some text            │
                         │                            │
                         │ __________________________ │
                         │                            │
                         │                            │
                         │                            │
                         │    <Ok>        <Cancel>    │
                         │                            │
                         └────────────────────────────┘                         
COLOR=$(whiptail --inputbox "What is your favorite Color?" 8 78 --title "Example Dialog" 3>&1 1>&2 2>&3)

exitstatus=$?
if [ $exitstatus = 0 ]; then
    echo "User selected Ok and entered " $COLOR
else
    echo "User selected Cancel."
fi

echo "(Exit status was $exitstatus)"				

8.4.5. --passwordbox

例 8.3. whiptail - passwordbox

whiptail --title "Example Dialog" --passwordbox "This is an example of a password box. You must hit OK to continue." 8 78			

8.4.6. --textbox

例 8.4. whiptail - passwordbox

whiptail --title "Example Dialog" --textbox /etc/passwd 20 60

为文本取添加滚动条功能

whiptail --title "Example Dialog" --textbox /etc/passwd 20 60 --scrolltext
				

8.4.7. --checklist

例 8.5. whiptail - example 1

whiptail --title "Check list example" --checklist \
"Choose user's permissions" 20 78 16 \
"NET_OUTBOUND" "Allow connections to other hosts" ON \
"NET_INBOUND" "Allow connections from other hosts" OFF \
"LOCAL_MOUNT" "Allow mounting of local devices" OFF \
"REMOTE_MOUNT" "Allow mounting of remote devices" OFF
				

8.4.8. --radiolist

例 8.6. whiptail - radiolist

whiptail --title "Check list example" --radiolist \
"Choose user's permissions" 20 78 16 \
"NET_OUTBOUND" "Allow connections to other hosts" ON \
"NET_INBOUND" "Allow connections from other hosts" OFF \
"LOCAL_MOUNT" "Allow mounting of local devices" OFF \
"REMOTE_MOUNT" "Allow mounting of remote devices" OFF
				

8.4.9. --menu

whiptail --title "Menu example" --menu "Choose an option" 22 78 16 \
"<-- Back" "Return to the main menu." \
"Add User" "Add a user to the system." \
"Modify User" "Modify an existing user." \
"List Users" "List all users on the system." \
"Add Group" "Add a user group to the system." \
"Modify Group" "Modify a group and its list of members." \
"List Groups" "List all groups on the system."			
 ┌──────────────────────────────┤ Menu example ├──────────────────────────────┐
 │            <-- Back     Return to the main menu.                           │
 │            Add User     Add a user to the system.                          │
 │            Modify User  Modify an existing user.                           │
 │            List Users   List all users on the system.                      │
 │            Add Group    Add a user group to the system.                    │
 │            Modify Group Modify a group and its list of members.            │
 │            List Groups  List all groups on the system.                     │
 │                                                                            │
 │                                                                            │
 │                    <Ok>                        <Cancel>                    │
 │                                                                            │
 └────────────────────────────────────────────────────────────────────────────┘ 			

8.4.10. --gauge

#!/bin/bash
{
    for ((i = 0 ; i <= 100 ; i+=30)); do
        sleep 1
        echo $i
    done
} | whiptail --gauge "Please wait" 5 50 0	

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

时间: 2024-09-20 11:56:19

8.4. whiptail - display dialog boxes from shell scripts的相关文章

30.4. whiptail - display dialog boxes from shell scripts

30.4.1. --msgbox whiptail --title "Example Dialog" --msgbox "This is an example of a message box. You must hit OK to continue." 8 78 ┌─────────────────────────────┤ Example Dialog ├─────────────────────────────┐ │ │ │ This is an exampl

27.13. flock - manage locks from shell scripts

  ### flock     当多个进程可能会对同样的数据执行操作时,这些进程需要保证其它进程没有在操作,以免损坏数据.通常,这样的进程会使用一个"锁文件",也就是建立一个文件来告诉别的进程自己在运行,如果检测到那个文件存在则认为有操作同样数据的进程在工作. 这样的问题是,进程不小心意外死亡了,没有清理掉那个锁文件,那么只能由用户手动来清理了. flock 是对于整个文件的建议性锁;也就是说如果一个进程在一个文件(inode)上放了锁,那么其它进程是可以知道的,(建议性锁不强求进程遵

5.13. flock - manage locks from shell scripts

  ### flock     当多个进程可能会对同样的数据执行操作时,这些进程需要保证其它进程没有在操作,以免损坏数据.通常,这样的进程会使用一个"锁文件",也就是建立一个文件来告诉别的进程自己在运行,如果检测到那个文件存在则认为有操作同样数据的进程在工作. 这样的问题是,进程不小心意外死亡了,没有清理掉那个锁文件,那么只能由用户手动来清理了. flock 是对于整个文件的建议性锁;也就是说如果一个进程在一个文件(inode)上放了锁,那么其它进程是可以知道的,(建议性锁不强求进程遵

第 8 章 Shell Terminal

dialog, whiptail, gdialog, kdialog and nautilus 目录 8.1. terminal 8.1.1. resize - set TERMCAP and terminal settings to current xterm window size 8.1.2. tset, reset - terminal initialization 8.1.3. stty - change and print terminal line settings 8.2. tp

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

很多人误以为shell脚本只能在命令行下使用.其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等.你可以控制最终的输出,光标位置还有各种输出效果.下面我将介绍一些工具,帮助你创建强大的,互动的,用户友好的 Unix/Linux shell脚本.我在FreeBSD和Linux下测试过这些工具,不过其他UNIX系列的操作系统应该都支持的.  1. notify-send 命令 这个命令可以让你通过通知进程发送一个桌面通知给用户.这可以用来向用户发送提示,或者显示一些信息而不用打断用

如何在Bash Shell脚本中显示对话框

这个教程给出几个如何使用类似zenity和whiptail的工具在Bash Shell 脚本中提供消息/对话框的例子.使用这些工具,你的脚本能够告知用户当前程序运行的状态并能与用户进行交互.这两个工具的不同之处在于显示消息框或者对话框的方式.Zenity用GTK工具包创建图形用户界面,而whiptail则在终端窗口内创建消息框. Zenity 工具 在Ubuntu中安装zenity,运行: sudo apt-get install zenity 用zenity创建消息框或者对话框的命令是不言自明

Python 终端下的TUI开发,whiptail 的 Python 封装

Python 终端下的TUI开发 Mr. Neo Chen (netkiller), 陈景峰(BG7NYT) <openunix@163.com> 版权 2011, 2012 http://netkiller.github.com 摘要   下面是我多年积累下来的经验总结,整理成文档供大家参考:   Netkiller Architect 手札 Netkiller Linux 手札 Netkiller Developer 手札 Netkiller Database 手札 Netkiller D

Shell脚本应用图形界面的案例

在Shell脚本的编写应用中,有时候会需要用到图形界面的案例,比如默认cp拷贝文件为静默模式,无法看到拷贝的进度与百分比.而dialog正是为Shell提供图形界面的工具,该工具可以为Shell脚本提供各式各样的图形界面,今天为大家介绍的是dialog提供的进度条图形功能. dialog指令可以单独执行,各式为dialog --title "Copy" --gauge "files" 6 70 10 备注:title表示图形进度条的标题,gauge为正文内容,进度条

【原创】shell 操作之 read、cat 和 here document

本文主要学习总结一下三方面问题:  通过 read 进行行读 here document here document 的应用 [read] 在 linux 下执行 man read 能看到如下内容 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53