Okna dialogowe w BASH-u

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 10295 razy

Instalacja pakietu dialog

Domyślnie na Linux-ie nie jest wymagany do obsługi tworzenia konsolowych okien dialogowych pakiet dialog, należy więc go doinstalować poleceniem:

apt-get install dialog

Okno dialogowe wyboru yes/no

Wywołanie okna dialogowego wyboru wygląda następujaco:

dialog --clear --title "Okno dialogowe yes/no" --backtitle "BASH" --yesno "Twój wybór:" 10 40 YOUR_CHOOSE=$?; if [ "$YOUR_CHOOSE" == 0 ]; then echo "Wybrałeś Yes"; elif [ "$YOUR_CHOOSE" == 1 ]; then echo "Wybrałeś No"; else echo "Niczego nie wybrałeś"; fi

Uruchomienie powyższego skryptu spowoduje wyświetlenie okienka z poniższej ilustracji.

Okno dialogowe w BASH-u utworzone za pomocą polecenia dialog
Rys. 1
Okno dialogowe utworzone w BASH-u za pomocą polecenia dialog

Możliwe jest zaznaczenie przycisku Yes lub No za pomocą strzałek. Enter zatwierdza wybór, Esc wychodzi z programu bez wybrania żadnej opcji. Po wciśnięciu przycisku Yes do zmiennej $? zwrócone zostanie 0, dla przycisku No zwrócona wartość to 1, natomiast dla zamknięcia okna bez wybrania przycisku -1.

Okno dialogowe menu

Okno dialogowe umożliwia wybranie jednej z dostępnych pozycji, oto przykład skryptu wykorzystującego okno dialogowe menu:

OUTPUT="temp.txt" >$OUTPUT; dialog --clear --title "Okno dialogowe Menu" --backtitle "BASH" --menu "Twój wybór:" 10 40 3 1 "Pozycja 1" 2 "Pozycja 2" 3 "Pozycja 3" 2> $OUTPUT BUTTON=$?; if [ "$BUTTON" == 0 ]; then echo "Wybrałeś Ok"; elif [ "BUTTON" == 1 ]; then echo "Wybrałeś Anuluj"; else echo "Niczego nie wybrałeś"; fi echo $(<$OUTPUT)

W wyniku działania powyższego kodu oczom twym ukazać powinno się okienko z poniższego rysunku.

Widok okna dialogowego menu utworzonego w BASH-u za pomocą polecenia dialog
Rys. 2
Widok okna dialogowego menu utworzonego w BASH-u za pomocą polecenia dialog.

Warto nadmienić, że dane związane z wyborem pozycji w menu zostaną przekierowane do pliku, którego nazwa znajduje się w zmiennej OUTPUT. Po zamknięciu okna powinno pojawić się coś takiego:

Wybrałeś Ok
1

jeżeli tylko wciśnięto przycisk Ok z zaznaczoną opcją nr. 1.

Okno dialogowe checklist

Okno tego typu umożliwia wybranie kilku różnych opcji na raz, oto przykład kodu z jego użyciem:

OUTPUT="temp.txt" >$OUTPUT; dialog --clear --title "Okno dialogowe Checklist" --backtitle "BASH" --checklist "Twój wybór:" 10 40 3 1 "Pozycja 1" "off" 2 "Pozycja 2" "off" 3 "Pozycja 3" "off" 2> $OUTPUT BUTTON=$?; if [ "$BUTTON" == 0 ]; then echo "Wybrałeś Ok"; elif [ "BUTTON" == 1 ]; then echo "Wybrałeś Anuluj"; else echo "Niczego nie wybrałeś"; fi echo $(<$OUTPUT)

W wyniku działania powyższego skryptu oczom twym ukazać powinien się widok z poniższej ilustracji.

Okno dialogowe checklist utworzone w BASH-u za pomocą polecenia dialog
Rys. 3
Okno dialogowe checklist utworzone w BASH-u za pomocą polecenia dialog

Zwrócone wyniki mogą być następujące:

Wybrałeś Ok
1 2 3

gdy zaznaczone zostały wszystkie opcje.

Okno dialogowe radiolist

Okno tego typu różni się od menu tym, że przy opcji wyboru jest krzyżyk postawiony i można sobie domyślną wartość ustawić. Oto przykład:

OUTPUT="temp.txt" >$OUTPUT; dialog --clear --title "Okno dialogowe Radiolist" --backtitle "BASH" --radiolist "Twój wybór:" 10 40 3 1 "Pozycja 1" "off" 2 "Pozycja 2" "off" 3 "Pozycja 3" "off" 2> $OUTPUT BUTTON=$?; if [ "$BUTTON" == 0 ]; then echo "Wybrałeś Ok"; elif [ "BUTTON" == 1 ]; then echo "Wybrałeś Anuluj"; else echo "Niczego nie wybrałeś"; fi echo $(<$OUTPUT)

W wyniku wywołania powyższego kodu uzyskać powinno się okno dialogowe z poniższej ilustracji.

Okno dialogowe radiolist utworzone w BASH-u za pomocą polecenia dialog
Rys. 4
Okno dialogowe radiolist utworzone w BASH-u za pomocą polecenia dialog

Przykładowy wynik działania:

Wybrałeś Ok
3

gdy wciśnięty został przycisk Ok z zaznaczoną opcją 3.

Okno dialogowe inputbox

Tego typu okno pozwala użytkownikowi wpisać coś za pomocą klawiatury. Oto przykład:

OUTPUT="temp.txt" >$OUTPUT; dialog --clear --title "Okno dialogowe Inputbox" --backtitle "BASH" --inputbox "Twoje dane:" 10 40 "Wpisz swoje dane" 2> $OUTPUT BUTTON=$?; if [ "$BUTTON" == 0 ]; then echo "Wybrałeś Ok"; elif [ "BUTTON" == 1 ]; then echo "Wybrałeś Anuluj"; else echo "Niczego nie wybrałeś"; fi echo $(<$OUTPUT)

W wyniku działania powyższego kodu powinno pokazać się okienko z poniższej ilustracji.

Okno dialogowe inputbox utworzone w BASH-u za pomocą polecenia dialog
Rys. 5
Okno dialogowe inputbox utworzone w BASH-u za pomocą polecenia dialog

Wciśnięcie przycisku Ok spowoduje wyświetlenie:

Wybrałeś Ok
Wpisz swoje dane

Okno dialogowe msgbox

Jedynym celem tego typu okienka jest wyświetlenie informacji wraz z przyciskiem Ok. Oto przykład:

dialog --clear --title "Okno dialogowe Msgbox" --backtitle "BASH" --msgbox "Wiadomość" 10 40

Wynikiem działania powyższego kodu będzie widok okna z poniższej ilustracji.

Okno dialogowe msgbox utworzone w BASH-u za pomocą polecenia dialog
Rys. 6
Okno dialogowe msgbox utworzone w BASH-u za pomocą polecenia dialog

Okno dialogowe infobox

Jedynym celem tego typu okienka jest wyświetlenie informacji bez przycisku. Oto przykład:

dialog --title "Okno dialogowe Infobox" --backtitle "BASH" --infobox "Wiadomość" 10 40

Wynikiem działania powyższego kodu będzie widok okna z poniższej ilustracji.

Okno dialogowe msgbox utworzone w BASH-u za pomocą polecenia dialog
Rys. 7
Okno dialogowe infobox utworzone w BASH-u za pomocą polecenia dialog

Okno dialogowe textbox

Tego typu okno wyświetla dane zawarte w podanym pliku. Oto przykład:

dialog --title "Okno dialogowe Textbox" --backtitle "BASH" --textbox "dmenu.sh" 10 40

Powyższe polecenie wyświetli zawartość pliku dmenu.sh tak jak pokazane to zostało na poniższym rysunku.

Okno dialogowe textbox utworzone w BASH-u za pomocą polecenia dialog
Rys. 8
Okno dialogowe textbox utworzone w BASH-u za pomocą polecenia dialog