====== Команда 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