KirMol Wiki

Добро пожаловать в KirMol Wiki

Инструменты пользователя

Инструменты сайта


linux:commands:whiptail

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

linux:commands:whiptail [2026/10/03 10:49] – создано Кирилл Молчановlinux:commands:whiptail [2026/10/03 10:49] (текущий) – внешнее изменение (Дата неизвестна) 127.0.0.1
Строка 1: Строка 1:
 +====== Команда whiptail ======
 +
 +----
 +
 +===== О команде whiptail =====
 +
 +Команда whiptail - Это утилита командной строки, которая предназначена для создания текстовых графических интерфейсов (TUI) в окне терминала. Является альтернативой утилиты dialog.
 +
 +Whiptail использует библиотеку newt и позволяет создавать диалоговые окна, меню, формы и запросы для скриптов на Bash.
 +
 +===== Установка whiptail =====
 +
 +Устанавливаем whiptail:
 +<code bash>
 +sudo apt install whiptail
 +</code>
 +
 +===== Опции whiptail =====
 +
 +  * **--help** - Показать справочную информацию по команде
 +  * **--version** - Показать информацию о версии whiptail
 +  * **--clear** - Очистит экран при выходе
 +  * **--defaultno** - Отключает кнопку по умолчанию
 +  * **--default-item** - Устанавливает строку по умолчанию
 +
 +===== Опции box whiptail =====
 +
 +^ Тип окна          ^ Описание                                                      ^
 +| **--title**       | Заголовок окна                                                |
 +| **--msgbox**      | Информационное окно с кнопкой "OK"                            |
 +| **--yesno**       | Вопрос с выбором "Да" или "Нет"                               |
 +| **--inputbox**    | Поле для ввода текста пользователем                           |
 +| **--passwordbox** | Поле для ввода пароля (символы скрыты)                        |
 +| **--menu**        | Список элементов, из которых можно выбрать один               |
 +| **--checklist**   | Список элементов, где можно выбрать несколько (через пробел)  |
 +| **--radiolist**   | Список, где можно выбрать только один элемент (радиокнопки)   |
 +
 +===== Использование whiptail =====
 +
 +==== Информационное сообщение (msgbox) ====
 +
 +Вывести текст и ждет нажатия Enter или OK:
 +<code bash>
 +whiptail --title "Заголовок" --msgbox "Операция завершена успешно!" 15 50
 +</code>
 +
 +10 и 40 - это высота и ширина окна
 +
 +==== Вопрос "Да/Нет" (yes/no) ====
 +
 +Использовать в условиях if. Возвращает код выхода 0 (Да) 1 (Нет):
 +<code bash>
 +#!/bin/bash
 +
 +if whiptail --title "Подтверждение" --yesno "Вы уверены, что хотите удалить файл?" 15 50; then
 +    echo "Пользователь выбрал ДА"
 +else
 +    echo "Пользователь выбрал НЕТ"
 +fi
 +</code>
 +
 +==== Ввод текста (inputbox) ====
 +
 +Ввод данных:
 +<code bash>
 +#!/bin/bash
 +
 +NAME=$(whiptail --title "Ввод данных" --inputbox "Как вас зовут?" 10 40 3>&1 1>&2 2>&3)
 +
 +echo "Привет, $NAME!"
 +</code>
 +
 +Результат сохраняется в переменную через stderr (так как whiptail выводит результат в поток ошибок). \\
 +Разбор конструкции 3>&1 1>&2 2>&3: это маневр для перенаправления вывода из stderr в stdout, чтобы сохранить результат в переменную.
 +
 +==== Меню выбора (menu) ====
 +
 +Выбрать один пункт из списка:
 +<code bash>
 +#!/bin/bash
 +
 +CHOICE=$(whiptail --title "Выбор системы" --menu "Выберите ОС:" 15 50 3 \
 +"1" "Debian" \
 +"2" "Ubuntu" \
 +"3" "Linux Mint" 3>&1 1>&2 2>&3)
 +
 +echo "Вы выбрали: $CHOICE"
 +</code>
 +
 +==== Список с множественным выбором (checklist) ====
 +
 +Пользователь отмечает нужные пункты (пробелом):
 +<code bash>
 +#!/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
 +</code>
 +
 +