Это старая версия документа!
Содержание
Команда whiptail
О команде whiptail
Команда whiptail - Это утилита командной строки, которая предназначена для создания текстовых графических интерфейсов (TUI) в окне терминала. Является альтернативой утилиты dialog.
Whiptail использует библиотеку newt и позволяет создавать диалоговые окна, меню, формы и запросы для скриптов на Bash.
Установка whiptail
Устанавливаем whiptail:
sudo apt install whiptail
Опции whiptail
- –help - Показать справочную информацию по команде
- –version - Показать информацию о версии 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"
