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