Whiptail Blog Linux

COMO CRIAR CAIXAS DE DIÁLOGO INTERATIVA COM SCRIPT SHELL

Quando você instala um novo software no terminal, muitas vezes você pode ver as caixas de diálogo informativas aparecendo. O tipo de caixas de diálogo varia de simples sim/não , caixa de senha, lista, menu, e assim por diante. A vantagem de usar essas caixas de diálogo user-friendly é que elas podem orientá-lo para inserir as informações necessárias de uma forma intuitiva.

Pré-instalado em todas as distribuições Linux modernas, um programa chamado whiptail pode agilizar o processo de criação de diálogos baseados em terminais e caixas de mensagem dentro de um shell script, semelhante à forma como os códigos Zenity ou xdialog uma interface gráfica para scripts.

Criar uma caixa de mensagem:

whiptail --title "" --msgbox ""

Exemplo:

Criar uma caixa de Sim/Não:

whiptail --title "" --yesno ""

Exemplo:

#!/bin/bash
if (whiptail --title "Caixa teste de sim/nao" --yesno "Escolha Sim ou Não." 10 60) then
    echo "Você escolheu Sim. Saída com status $?."
else
    echo "Você escolheu Não. Saída com status $?."
fi

Whiptail Blog Linux

Você ainda tem a opção de customizar os botões de sim/não:

#!/bin/bash
if (whiptail --title "Caixa teste de sim/nao" --yes-button "Vim" --no-button "Emacs" --yesno "Qual desses dois são melhores?" 10 60) then
    echo "Você escolheu Vim. Saída com status $?."
else
    echo "Você escolheu Emacs. Saída com status $?."
fi

Whiptail Blog Linux

Criar uma caixa de formulário:

whiptail --title "" --inputbox ""

Exemplo:

Criar uma caixa de senha:

whiptail --title "" --passwordbox ""

Exemplo:

#!/bin/bash
PASSWORD=$(whiptail --title "Test caixa de senha" --passwordbox "Insira sua senha." 10 60 3>&1 1>&2 2>&3)
 
exitstatus=$?
if [ $exitstatus = 0 ]; then
    echo "Sua senha é:" $PASSWORD
else
    echo "Você cancelou."
fi

Whiptail Blog Linux

Criar um MENU:

whiptail --title "" --menu ""    [   ] . . .

Exemplo:

Criar um input radio:

whiptail --title "" --radiolist ""    [    ] . . .
#!/bin/bash
DISTROS=$(whiptail --title "Teste Checklist Dialogo" --radiolist \
"Qual sua distro preferida?" 15 60 4 \
"debian" "Debian" ON \
"ubuntu" "Ubuntu" OFF \
"centos" "CentOS" OFF \
"mint" "Mint" OFF 3>&1 1>&2 2>&3)
 
exitstatus=$?
if [ $exitstatus = 0 ]; then
    echo "Sua distro é:" $DISTROS
else
    echo "Você cancelou."
fi

Whiptail Blog Linux

Criar uma barra de progresso:

whiptail --gauge ""

Para mais informações:

man whiptail