Escolar Documentos
Profissional Documentos
Cultura Documentos
Você pode usar janelas da GUI, controles deslizantes, botões de rádio, barras de progresso e
muito mais em seus scripts Bash. Aprenda como usar o zenitykit de ferramentas e dar uma
nova cara aos seus scripts Bash. Vamos mostrar como.
O script Bash é uma linguagem de programação poderosa e, como está embutido no shell
Bash, está prontamente disponível para todos. É uma linguagem fácil de começar a programar.
Por ser interpretada, você não precisa compilar seus scripts. Assim que editar o arquivo de
script e torná-lo executável, você poderá executá-lo. Isso torna o ciclo de codi�cação,
execução e depuração bastante e�ciente.
Existem duas queixas principais que as pessoas têm com os scripts Bash, e a primeira é a
velocidade. Como o shell Bash interpreta os comandos no script, eles não são executados tão
rapidamente quanto o código compilado. No entanto, é como reclamar que um trator não é
tão rápido quanto um carro; eles são feitos para coisas diferentes.
No entanto, existem dois tipos de velocidade. Muitas vezes você pode bater juntos um script
rápido e usá-lo para executar uma tarefa muito mais rapidamente do que desenvolver uma
solução em uma linguagem compilada, como C .
A segunda reclamação que as pessoas têm dos scripts Bash é a interface do usuário – é uma
janela de terminal. Claro, às vezes a interface não importa. Se a única pessoa que usará o
script for seu autor, a interface provavelmente não é tão importante. Nem importa para
scripts que executam processamento em segundo plano e em lote. Normalmente, esses
scripts não precisam de muita (se houver) interação do usuário.
1 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
Há ocasiões em que você precisa de algo um pouco mais intuitivo e moderno do que a janela
do terminal. A maioria das pessoas está familiarizada com a interface grá�ca do usuário (GUI).
Para dar às pessoas uma experiência o mais simples possível, você deve criar e usar elementos
GUI de seus scripts.
Índice
1. O Aplicativo Zenity
2. A janela de diálogo do calendário
3. Capturando o valor da data
4. A janela de diálogo de seleção de arquivo: escolhendo um arquivo
5. A janela de diálogo de seleção de arquivo: salvando um arquivo
6. Janelas de diálogo de noti�cação
7. A janela de diálogo de progresso
8. A janela de diálogo da escala
9. A janela de diálogo de entrada
10. Juntando tudo
O Aplicativo Zenity
zenitypermite que você incorpore uma ampla variedade de elementos de interface grá�ca
em seus scripts Bash. É um kit de ferramentas poderoso que dá aos seus scripts uma sensação
moderna e uma aparência contemporânea e familiar.
zenityestá pré-instalado nas distribuições Ubuntu, Fedora e Manjaro. Faz parte do GNOME.
Se você usa o KDE, talvez queira fazer o check-out kdialog , embora zenity seja executado
em qualquer ambiente de área de trabalho.
Os exemplos neste artigo mostram como criar as diferentes janelas de diálogo a partir da
linha de comando, como capturar seus valores de retorno e seleções do usuário em variáveis e
como usar as janelas de diálogo em scripts.
Terminamos com um pequeno aplicativo que faz uso de todos os três tipos de janelas de
diálogo.
2 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
zenity --calendar
A janela de diálogo do calendário é exibida. Isso tem toda a funcionalidade que você esperaria
de um selecionador de data padrão. Você pode alterar o mês e o ano e clicar em um dia para
selecionar essa data. Por padrão, a data de hoje é destacada quando a janela é exibida.
Clique em “OK” para fechar a janela de diálogo e selecionar a data destacada. Clicar duas
vezes em uma data faz a mesma coisa.
Se você não quiser fazer uma seleção de data, clique em “Cancelar”, pressione a tecla “Esc” no
teclado ou feche a janela de diálogo.
3 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
Você pode ignorar a linha, “GTKDialog mapeado sem um pai temporário. Isso é
desencorajado. ”
GTK signi�ca GIMP Tool Kit , que é o kit de ferramentas usado para desenvolver a interface
do GNOME . Foi originalmente desenvolvido pelos autores do GNU Image Manipulation
Program ( GIMP ). GNU signi�ca GNU’s Not Unix .
O motor GTK está alertando os autores de zenity que eles usaram um componente GTK de
uma maneira não padronizada.
Usaremos as seguintes opções com o calendário. Todos eles devem ser usados com a bandeira
4 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
• –Text : especi�ca uma string de texto a ser exibida no calendário. Ele substitui o
padrão, “Selecione uma data abaixo.”
• –Title : De�ne o título da janela de diálogo do calendário.
• –Day : De�ne o dia selecionado quando o calendário é aberto.
• –Month : De�ne o mês selecionado quando o calendário é aberto.
• –Ano : De�ne o ano que é selecionado quando o calendário é aberto.
Sim, obtivemos o mesmo resultado do exemplo anterior, mas aqui temos a data selecionada
armazenada em uma variável. No exemplo anterior, ele foi impresso e esquecido.
Agora, o calendário exibe nosso prompt e o título da janela. A data é de�nida para a data de
início escolhida, e não para a data de hoje.
5 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
Também podemos personalizar o formato da string de data retornada quando uma seleção é
feita. A --date-formatopção deve ser seguida por um especi�cador de formato. Esta é uma
string de tokens que de�nem os dados e formatos que devem ser incluídos na saída. Os tokens
são os mesmos usados com a strftime() função da linguagem C e há uma grande seleção
deles.
6 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
E a data é retornada usando nosso formato. Mostra o nome do dia da semana, seguido da data
na ordem europeia: dia, mês, ano.
zenityfornece todas essas funcionalidades e muito mais. E é tão fácil de usar quanto a janela
de diálogo do calendário.
7 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
A janela de diálogo de seleção de arquivo é tão funcional quanto qualquer outra janela de
seleção de arquivo.
O usuário pode navegar pelo sistema de arquivos e selecionar o arquivo de sua escolha.
8 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
9 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
A janela de diálogo para salvar o arquivo é exibida. Observe que há um campo de texto onde
alguém pode digitar um nome de arquivo.
O usuário pode navegar até o local de sua escolha no sistema de arquivos, fornecer um nome
para o arquivo ou clicar em um arquivo existente para substituí-lo.
10 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
Quando ele clica em “OK”, uma janela de diálogo de con�rmação é exibida solicitando que ele
con�rme se deseja substituir o arquivo existente. Observe que o nome do arquivo aparece na
caixa de diálogo de aviso. Esse é o tipo de atenção aos detalhes que confere zenitysua
aparência pro�ssional.
11 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
Para criar uma janela de diálogo de mensagem de erro, use o seguinte comando:
zenity --error --width 300 --text "Permissão negada. Não é possível gravar no
A janela de diálogo de erro aparece na largura especi�cada. Ele usa o ícone de erro GTK
padrão.
12 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
zenity --info --width 300 --text "Atualização concluída. Clique em OK para con
A nova opção que estamos usando é --info, que informa zenitypara criar uma janela de
diálogo de informações.
A nova opção que estamos usando é --question, que informa zenitypara criar uma janela
de diálogo de pergunta.
O $?é um parâmetro especial . Ele contém o valor de retorno do pipeline de primeiro plano
executado mais recentemente. Em termos gerais, este é o valor do processo encerrado mais
recentemente. Um valor zero signi�ca “OK” e um valor de um ou mais signi�ca “Cancelar”.
Esta é uma técnica geral que você pode aplicar a qualquer uma das zenityjanelas de diálogo.
Ao veri�car esse valor em seu script, você pode determinar se os dados retornados de uma
janela de diálogo devem ser processados ou ignorados.
13 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
zenity --warning --title "Pouco espaço no disco rígido" --width 300 --text "Po
A nova opção que estamos usando é --warning, que informa zenitypara criar uma janela de
diálogo de aviso.
A janela de diálogo de aviso é exibida. Não é uma pergunta, então só tem um botão.
14 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
A barra de progresso é avançada de acordo com os valores que são canalizados para ela a
partir do seu script. Para demonstrar o princípio, use o seguinte comando:
Podemos usar isso com a zenityjanela de diálogo de progresso para demonstrar a barra de
15 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
A janela de diálogo de progresso é exibida e a barra avança para 100 por cento, parando por
um segundo entre cada etapa.
Podemos usar esse conceito de canalizar valores zenitypara incluir a janela de diálogo de
progresso em um script.
! / bin / bash
function work-list () {
16 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
saída 0
• O script de�ne uma função chamada work-list. É aqui que você coloca seus
comandos e instruções para realizar um trabalho real. Substitua cada um dos sleep
1comandos pelos reais.
• zenity aceita as echo "# ..."linhas e as exibe na janela de diálogo de progresso.
Altere o texto dessas linhas, para que passem mensagens informativas ao usuário.
• As echolinhas que contêm números, como echo "25" , também são aceitas zenitye
de�nem o valor da barra de progresso.
• A função da lista de trabalho é chamada e canalizada para zenity.
chmod + x progress.sh
17 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
./progress.sh
O script é executado e a mensagem de texto muda conforme cada fase do script é executada.
A barra de progresso se move em etapas em direção a 100 por cento.
18 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
A janela de diálogo do controle deslizante aparece com o controle deslizante de�nido como
15.
Quando ela clica em “OK”, o valor é transferido para a variável Response e impresso na janela
do terminal.
19 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
Response = $ (zenity --entry --text "Digite seu termo de pesquisa" --title "Ho
Quando ele clica em “OK”, o valor que ele digitou é atribuído à variável Resposta. Usamos
echo para imprimir o valor da variável na janela do terminal.
20 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
Juntando tudo
Vamos juntar essas técnicas e criar um script funcional. O script executará uma varredura de
informações de hardware e apresentará os resultados ao usuário em uma janela de texto de
rolagem. Ela pode escolher um tipo de digitalização longo ou curto.
Para este script, usaremos três tipos de janelas de diálogo, duas das quais são novas para nós:
• A primeira é uma janela de diálogo de lista. Permite que alguém faça uma escolha.
• A segunda é uma janela de diálogo de progresso que permite ao usuário saber que
algo está acontecendo e que ele deve esperar.
• A terceira é uma janela de informações de texto, que exibe os resultados para o
usuário.
#! / bin / bash
TempFile = $ (mktemp)
21 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
outro
saída 0
chmod + x hardware-info.sh
Este script cria um arquivo temporário e o nome do arquivo é mantido na variável TempFile:
22 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
TempFile = $ (mktemp)
O script usa a --listopção de criar uma zenityjanela de diálogo chamada janela de diálogo
de lista. Os caracteres “\” no �nal das linhas dizem ao script para tratá-los como uma longa
linha que está enrolada. Aqui está o processo:
23 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
script de�ne uma variável chamada Flagigual a “”, que é uma string vazia.
• O script usa a Flagvariável na próxima seção.
outro
Agora que o script sabe qual tipo de varredura o usuário deseja, podemos realizar a varredura
das informações de hardware:
24 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
saída 0
./hardware-info.sh
25 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
A janela de progresso aparece com um indicador deslizante. Ele permanece na tela até que a
varredura de hardware seja concluída.
26 of 27 26/04/2023 04:57
Firefox https://maisgeek.com/como-adicionar-uma-gui-a-scripts...
Clique OK.”
Mesmo um maníaco por linha de comando obstinado tem que admitir que algumas janelas de
diálogo da GUI podem dar a um humilde script Bash um toque pro�ssional.
27 of 27 26/04/2023 04:57