Содержание

Команда whiptail


О команде whiptail

Команда whiptail - Это утилита командной строки, которая предназначена для создания текстовых графических интерфейсов (TUI) в окне терминала. Является альтернативой утилиты dialog.

Whiptail использует библиотеку newt и позволяет создавать диалоговые окна, меню, формы и запросы для скриптов на Bash.

Установка whiptail

Устанавливаем whiptail:

sudo apt install whiptail

Опции whiptail

Опции box whiptail

Тип окна Описание
–title Заголовок окна
–msgbox Информационное окно с кнопкой «OK»
–yesno Вопрос с выбором «Да» или «Нет»
–inputbox Поле для ввода текста пользователем
–passwordbox Поле для ввода пароля (символы скрыты)
–menu Список элементов, из которых можно выбрать один
–checklist Список элементов, где можно выбрать несколько (через пробел)
–radiolist Список, где можно выбрать только один элемент (радиокнопки)

Использование whiptail

Информационное сообщение (msgbox)

Вывести текст и ждет нажатия Enter или OK:

whiptail --title "Заголовок" --msgbox "Операция завершена успешно!" 15 50

10 и 40 - это высота и ширина окна

Вопрос "Да/Нет" (yes/no)

Использовать в условиях if. Возвращает код выхода 0 (Да) 1 (Нет):

#!/bin/bash
 
if whiptail --title "Подтверждение" --yesno "Вы уверены, что хотите удалить файл?" 15 50; then
    echo "Пользователь выбрал ДА"
else
    echo "Пользователь выбрал НЕТ"
fi

Ввод текста (inputbox)

Ввод данных:

#!/bin/bash
 
NAME=$(whiptail --title "Ввод данных" --inputbox "Как вас зовут?" 10 40 3>&1 1>&2 2>&3)
 
echo "Привет, $NAME!"

Результат сохраняется в переменную через stderr (так как whiptail выводит результат в поток ошибок).
Разбор конструкции 3>&1 1>&2 2>&3: это маневр для перенаправления вывода из stderr в stdout, чтобы сохранить результат в переменную.

Меню выбора (menu)

Выбрать один пункт из списка:

#!/bin/bash
 
CHOICE=$(whiptail --title "Выбор системы" --menu "Выберите ОС:" 15 50 3 \
"1" "Debian" \
"2" "Ubuntu" \
"3" "Linux Mint" 3>&1 1>&2 2>&3)
 
echo "Вы выбрали: $CHOICE"

Список с множественным выбором (checklist)

Пользователь отмечает нужные пункты (пробелом):

#!/bin/bash
 
    APPS=$(whiptail --title "Установка" --checklist "Выберите пакеты:" 15 50 5 \
    "Nginx" "Веб-сервер" OFF \
    "Apache" "Веб-сервер" OFF \
    "Git" "Система контроля версий" OFF \
    "Nano" "Текстовый редактор" OFF 3>&1 1>&2 2>&3)
    echo "Вы выбрали: $APPS"
 
if [ -z "$choices" ]; then
    echo "Отменена."
    exit 0
fi