Teknologi

whiptail – enkel dialogboks for terminalen

7. juni 2010 · Ingen Kommentarer

Dette er først og fremst en huskelapp for min egen del, men kanskje nyttig for andre også.

Jeg har laget mange shellscripts for å hjelpe meg i systemutvikling og til vedlikehold av tjenester. Av og til har jeg behov for å bekrefte at jeg virkelig ønsker å utføre handlingen, i tilfelle man skulle kjøre kommandoen ved et uhell, for eksempel å tømme Solr-indeksen (Solr er en søkemotor, et prosjekt fra Apache).

Ofte holder det med å bruke “read” for å lese inn tekst til en variabel, men et verktøy som heter “whiptail” gir et ncurses-grensenitt som tilbyr brukeren til å utføre forskjellige valg, for eksempel valget om “ja” eller “nei” for å utføre en kommando.

Som det aller enkleste eksempelet har man “yesno”-dialogboksen:


 # Ja/Nei-dialogboks med 10 rader og 50 kolonner
 # Skriver "jada" på skjermen hvis man velger "ja"
 whiptail --yesno "Vil du virkelig gå videre?" \
   10 50 && echo "jada"

Man kontrollerer svaret fra dialogboksen med exit-koden fra whiptail. Svarer man så “ja” i dialogboksen skrives “jada” ut på skjermen. Svarer man nei, så gjør den det ikke. Så enkelt.

Et annet eksempel er å vise en liste med som brukeren kan velge blant:


 whiptail --menu "Velg noe" \
   10 50 2 \
   1 "Valg 1" \
   2 "Valg 2" \
   3 "Valg 3" \
   4 "Valg 4"

Argumentet “2″ angir hvor mange valg som skal vises ad gangen, etterfulgt av ID/tekst-par for valgene. ID-en til valget som brukeren velger blir skrevet på skjerm.

Man har også andre former for dialogbokser, se “man whiptail” for flere opsjoner.