Whiptail —— 在linux终端中运行的gui程序

By | 2025-08-14

Whiptail 介绍

Whiptail 是一个基于文本的对话框工具,用于在终端中创建简单的用户界面。它是 Linux 系统中的一个实用程序,常用于 shell 脚本中与用户进行交互。Whiptail 是 Dialog 的一个轻量级替代品,功能类似但更简单。

主要特点

  1. 纯文本界面,适用于终端环境
  2. 支持多种对话框类型:消息框、菜单、输入框、进度条等
  3. 轻量级,依赖较少
  4. 适合在 shell 脚本中使用

常见对话框类型

  • --msgbox: 显示消息
  • --yesno: 是/否选择
  • --inputbox: 文本输入
  • --passwordbox: 密码输入
  • --menu: 菜单选择
  • --checklist: 复选框列表
  • --radiolist: 单选列表
  • --gauge: 进度条

测试脚本示例

以下是一个使用 whiptail 的测试脚本,展示了多种对话框类型:

#!/bin/bash

# 显示欢迎消息
whiptail --title "欢迎" --msgbox "这是一个 whiptail 测试脚本。\n按 OK 继续。" 10 60

# 是/否对话框
if whiptail --title "确认" --yesno "你想继续这个测试吗?" 10 60; then
    whiptail --title "选择" --msgbox "你选择了继续。" 10 60
else
    whiptail --title "选择" --msgbox "你选择了退出。" 10 60
    exit 0
fi

# 输入框
NAME=$(whiptail --title "输入测试" --inputbox "请输入你的名字:" 10 60 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus = 0 ]; then
    whiptail --title "结果" --msgbox "你的名字是: $NAME" 10 60
else
    whiptail --title "结果" --msgbox "你取消了输入。" 10 60
fi

# 菜单选择
OPTION=$(whiptail --title "菜单测试" --menu "选择一个选项:" 15 60 4 \
"1" "选项 1" \
"2" "选项 2" \
"3" "选项 3" 3>&1 1>&2 2>&3)

exitstatus=$?
if [ $exitstatus = 0 ]; then
    whiptail --title "选择" --msgbox "你选择了选项 $OPTION" 10 60
else
    whiptail --title "选择" --msgbox "你取消了菜单选择。" 10 60
fi

# 复选框
DISTROS=$(whiptail --title "复选框测试" --checklist \
"选择你喜欢的 Linux 发行版:" 15 60 4 \
"debian" "Debian" ON \
"ubuntu" "Ubuntu" OFF \
"centos" "CentOS" OFF \
"fedora" "Fedora" OFF 3>&1 1>&2 2>&3)

exitstatus=$?
if [ $exitstatus = 0 ]; then
    whiptail --title "选择" --msgbox "你选择了: $DISTROS" 10 60
else
    whiptail --title "选择" --msgbox "你取消了选择。" 10 60
fi

# 进度条
{
    for ((i = 0 ; i <= 100 ; i+=5)); do
        sleep 0.1
        echo $i
    done
} | whiptail --gauge "请等待进度条完成..." 6 60 0

# 结束消息
whiptail --title "完成" --msgbox "测试脚本已完成。感谢使用!" 10 60

使用方法

  1. 将上述脚本保存为 whiptail_test.sh
  2. 添加执行权限:chmod +x whiptail_test.sh
  3. 运行脚本:./whiptail_test.sh

注意:运行前请确保系统已安装 whiptail,如果没有安装,可以使用以下命令安装:

  • Debian/Ubuntu: sudo apt-get install whiptail
  • CentOS/RHEL: sudo yum install newt

如你想要我为你展示 dialog 版本,或者想扩展该脚本功能,也欢迎继续提问!