Jak używać widżetów NCURSES w skorupach w Linux

Jak używać widżetów NCURSES w skorupach w Linux

W tym samouczku poznamy podstaw Narzędzie dialogowe, w celu wykorzystania ncurses Widżet w naszych scenariuszach Shell. Zobaczymy, jak zainstalować okno dialogowe w najczęściej używanych rozkładach Linuksa, niektórych wspólnych opcji, których możemy użyć do zmiany zachowania okna dialogowego, jak używać niektórych widżetów; między innymi: pole wprowadzania, Lista kontrolna, Radiolista I tak nie. Na koniec zobaczymy, jak korzystać z danych uzyskanych przez przetwarzanie widżetu.

W tym samouczku nauczysz się:

  • Jak zainstalować narzędzie okna dialogowego w Linux
  • Jakie są najbardziej odpowiednie opcje dialogowe
  • Jak korzystać z inputBox, listy kontrolnej, radiolistki, hasła, msbox, kalendarza i widżetów takno
  • Jak zarządzać danymi pochodzącymi z przetwarzania widżetu


Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny od rozkładu
Oprogramowanie Narzędzie dialogowe jest potrzebne do śledzenia tego samouczka
Inny Znajomość interfejsu wiersza poleceń i przekierowania skorupy
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Instalacja w Linux

dialog Narzędzie jest dostępne we wszystkich głównych dystrybucjach Linux domyślnych repozytoriów, dlatego możemy użyć naszego ulubionego menedżera pakietów, aby je zainstalować. Jeśli na przykład używamy Fedory, możemy uruchomić:



$ sudo dnf dialog instaluj

Na Debian możemy uruchomić:

$ sudo apt-get dialog instaluj

dialog Narzędzie jest również zawarte w repozytorium Core Archlinux, więc możemy go zainstalować za pośrednictwem Pacman:

$ sudo pacman -s okno dialogowe

Instalowanie poleceń dotyczy również pochodnych wyżej wymienionych rozkładów.

Wspólne opcje dialogowe

Nazywamy te opcje „powszechnymi”, ponieważ można je używać niezależnie od rodzaju widżetu, którego chcemy użyć. Tutaj zobaczymy niektóre z nich, te, które mogą być bezpośrednio zainteresowani, gdy zaczniemy używać dialog.

Ustawienia Tytuł pola widgetów: opcja -title

Za pomocą --tytuł Opcja możemy określić ciąg, który będzie używany jako tytuł widżetu; będzie wyświetlany u góry pudełka. Oto przykład:

$ okno dialogowe -Title „Tytuł dialogu” -Inputbox „Wprowadź swoje imię i nazwisko:” 0 0

Oto, co jest wyświetlane w wyniku powyższego polecenia:





Łączenie widżetów: opcja -and -widget:

--i Widget Opcja, może być używana do „łańcucha” więcej widżetów, aby po użyciu pierwszego zostaliśmy natychmiast wyświetlone za drugim monitorem. Łańcuch jest zatrzymany, gdy jedno z okna dialogowych zwróci status istnienia niezerowego. Przykładem jego użycia jest:

$ okno dialogowe \--inputbox "Wprowadź swoje imię i nazwisko:" 0 0 \ --and-Widget-Inputbox "Wprowadź swój wiek:" 0 0

Po uruchomieniu powyższego polecenia zostanie wyświetlony pierwszy widżet wejściowy używany do wyświetlenia nas do naszej nazwy. Po potwierdzeniu danych wejściowych klikając OK przycisk, następny widżet zostanie wyświetlony, a my zostaniemy poproszeni o wprowadzenie naszego wieku.

Wyczyszczenie ekranu za pomocą opcji -clear

Kiedy używamy --i Widget Opcja Treść utworzona przez jeden widżet zastępuje produkowane przez poprzedni. Jeśli widżety nie zajmują dokładnie tej samej przestrzeni ekranu, dwie zawartość byłyby mieszane, a to stworzyłby bałagan.

Aby uniknąć nakładania się zawartości, możemy użyć --jasne opcja; Kiedy to robimy, zawartość widżetu jest usuwana przed wyświetleniem następnego widżetu: tylko kolor tła jest zachowany.

Ustawienie przycisku A zgodnie z domyślnie podświetlone: ​​opcja -default -button

W zależności od używanego widżetu więcej niż jeden przycisk może być wyświetlany na ekranie i domyślnie jeden z nich jest domyślnie podświetlony, określając domyślne działanie, które należy wykonać, gdy użytkownik naciśawia Enter.

Możemy zastąpić
widżet domyślnie za pomocą --Default-Button opcja, a następnie nazwa przycisku, jeden z nich OK, Tak, anulować, NIE, pomoc Lub dodatkowy.



Ta opcja może być bardzo przydatna, na przykład podczas monitorowania potwierdzenia przed potencjalnym wykonaniem
Niebezpieczne działanie:

$ okno dialogowe--default-button „nie”-inputbox "Wprowadź swoje imię i nazwisko:" 0 0


Jak widać na zrzucie ekranu, stworzyliśmy, aby domyślnie wybrano przycisk „Nie”, aby użytkownik wyraźnie wybrać „Tak”, aby potwierdzić jego wybór.

Ustawienie domyślnego wybranego elementu na liście z -default -item

Kiedy używamy listy kontrolnej lub widżetu menu, domyślnie pierwszy element na liście możliwych wyborów jest. Za pomocą --default-element Opcja i odwołując się do elementu, możemy użyć go jako alternatywnej wartości domyślnej:

$ okno dialogowe--default-Item 2-Checklist „Wybierz:” 0 0 5 \ 1 „Pierwszy element” Off \ 2 „drugi element” Off \ 3 „Trzeci element”




Jak widać, w powyższym przykładzie, odnieśliśmy się do elementu etykietka, 2 W tym przypadku (rozwinięmy to później).

Określenie opóźnienia czasowego po potwierdzeniu: opcja -SLEEP

Czasami możemy chcieć, aby nasza aplikacja czekała na określoną liczbę sekund po przetworzeniu okna dialogowego. Aby osiągnąć to zachowanie, możemy użyć --spać opcja i podaj liczbę sekund na czekanie jako wartość:

$ okno dialogowe - -Sleep 3 -InputBox "Wprowadź swoje imię:" 0 0

W wyniku powyższego polecenia, po pole wprowadzania Widget jest wyświetlany, a użytkownik trafia WCHODZIĆ klucz, 3 sekundy czekają, zanim następne polecenie w skrypcie wywołującym.

Zapewnienie limitu czasu wyboru

W niektórych przypadkach możemy chcieć dać użytkownikowi maksymalną liczbę sekund na wykonanie wyboru. Aplikacja dialogowa zawiera --koniec czasu opcja uzyskania wspomnianego zachowania. Liczba sekund limitu czasu musi zostać przekazana jako argument opcji. Jeśli po określonej ilości sekund, pod warunkiem, że użytkownik nie wykonuje swojego wyboru, aplikacja wyjdzie ze statusem błędu:

$ dialog -Timeout 3 -Inputbox „Wprowadź swoje imię i nazwisko:” 0 0

Ustawienie alternatywnych etykiet dla przycisków

dialog narzędzie zapewnia serię opcji zastąpienia domyślnej etykiety dla przycisków: możemy użyć --exit-label, --Extrabel, --Pomoc, --bez etykiety, --OK-label, --Tak-label Aby zmienić etykiety „wyjścia”, „Extra”, „Pomoc”, „Nie”, „OK” i „Tak”, odpowiednio.

Każda z wyżej wymienionych opcji bierze ciąg jako argument, który jest używany jako etykieta przycisku. Oto przykład użycia opcji:

$ dialog--default-button "no" \ --no-label "I Don't" \--yes-Label "I Do" \--yesno "Czy naprawdę chcesz sformatować partycję?"0 0

Powyższe polecenie przyniesie następujący wynik:





Widżety dialogowe

Do tej pory widzieliśmy jedne z najbardziej przydatnych dialog „Wspólne” opcje. Teraz zobaczymy, jak szczegółowo używać niektórych dostępnych widżetów. Przed kontynuowaniem musimy określić ogólną składnię. Kiedy uruchamiamy okno dialogowe, zawsze musimy podać trzy parametry:

  1. Tekst, który ma być wyświetlany w widżecie;
  2. Szerokość widżetu;
  3. Wysokość widżetu;

Jeśli zapewniamy wartość 0 Dla szerokości lub wysokości wartość odpowiedniego atrybutu jest ustawiana automatycznie.

Widżet InputBox

Widżet InputBox służy do monitowania użytkownika do odpowiedzi na pytanie za pomocą danych tekstowych. Parametr tekstowy służy do udzielenia pytania: jeśli ciąg jest dłuższy niż okno dialogowe, ten ostatni będzie przewijany. Aby użyć tego widżetu, wywołujemy okno dialogowe z --pole wprowadzania opcja:



Po wyjściu wejście dostarczone przez użytkownika są wyświetlane na wyniku okna dialogowego, które domyślnie jest Stderr.

Widżet listy kontrolnej

Widzieliśmy już, jak wygląda widżet listy kontrolnej w poprzednich przykładach: W tego typu widżet seria opcji jest dostarczana użytkownikowi, który może wybrać jeden lub więcej z nich. Aby użyć tego widżetu, musimy użyć --Lista kontrolna opcja, a oprócz standardowych trzech parametrów, które należy przekazać do wszystkich widżetów, musimy również dostarczyć lista wysokości i wybory do wyświetlenia.



Wysokość linii Parametr służy do ustawienia liczby linii jednocześnie: jeśli liczby linii jest mniejsze niż dostępne, menu stanie się przewijane. Jeśli zapewniamy 0 jako wartość Wysokość linii Liczba linii będzie odpowiadała liczbie opcji.

Dla każdego wyboru musimy podać identyfikator (tag), nazwę i status, który może być wyłączony Lub NA. Jeśli status jest NA Wybór zostanie domyślnie sprawdzony. Po potwierdzeniu naszych wyborów znaczniki związane z sprawdzonym wpisem zostaną wyświetlone Stderr:

$ okno dialogowe -CheckList „Wybierz elementy:” 0 0 0 \ 1 ”Wybór numer jeden„ Off \ 2 ”Wybór numer dwa” na \ 3 "Wybór numer trzy„ Off \ 4 "Wybór numer cztery"

Z powyższym poleceniem uruchomiliśmy menu z 4 opcjami i domyślnie ustaw opcje 2 i 4. Wyjście polecenia jest następujące:



Widżet radiolistyczny

Widżet radiolistyczny jest uruchamiany po wywołaniu okna dialogowego --Radiolista opcja. Działa podobnie do widżetu listy kontrolnej, z różnicą, że wybory wykluczają się wzajemnie, więc można wybrać tylko jeden element. Oto jak używamy widżetu:

$ okno dialogowe -Radiolist „Wybierz elementy:” 0 0 0 \ 1 ”Wybór numer jeden„ Off \ 2 ”Wybór numer dwa” na \ 3 "Wybór numer trzy„ Off \ 4 "Wybór numer cztery„


Ponieważ wybory wykluczają się wzajemnie, tylko pierwsza opcja ustawiona NA zostanie wybrany jako domyślny.



Zapytaj użytkownika o hasło za pomocą widżetu hasła

Widżet Passwordbox służy, aby umożliwić monit użytkownika do wprowadzenia hasła. Ze względów bezpieczeństwa tekst wprowadzony przez użytkownika nie jest wyświetlany. To zachowanie można zmodyfikować za pomocą --niepewny Opcja: Jeśli to zrobimy, widżet wyświetli gwiazdkę dla każdej litery hasła wprowadzonego w odpowiednim polu.

Używamy widżetu, uruchamiając okno dialogowe z --Passwordbox opcja:

$ dialog -Insecure - -Passwordbox „Wprowadź hasło:” 0 0

Wyjście powyższego polecenia to:



Wyświetlanie wiadomości z widżetem msgbox

Wykorzystanie tego widżetu jest naprawdę proste: wywoływane jest, wywołując okno dialogowe z --msgbox opcja i wyświetla komunikat, który jest treścią tekst parametr. Pojedynczy OK Wyświetlany jest przycisk:

$ dialog - -MSGBOX "To bardzo ważna wiadomość, którą należy dokładnie przeczytać!"0 0




Widżet kalendarza

Możemy użyć widżetu kalendarza, wywołując narzędzie dialogowe z --kalendarz opcja. Widżet wybierz datę, wybierając miesiąc, dzień i rok, które są wyświetlane w osobnych sekcjach widżetu. Możliwe jest podanie domyślnej daty, przekazując ją jako część polecenia.

Aby rozpocząć widżet z „Piąty Day of Maj Rok 2020” jako datę domyślną, na przykład uruchomimy następujące polecenie:

$ okno dialogowe -Calendar „Wybierz datę:” 0 0 27 05 2020

Wytworzy następujące dane wyjściowe:






Możemy przemieszczać się między sekcjami widżetu za pomocą PATKA Klucz i zmień parametry za pomocą klawiszy strzałek. Po potwierdzeniu wyboru jest to wyświetlane Stderr w formacie dzień/miesiąc/rok; Można to zmodyfikować za pomocą --format daty opcja z formatem kompatybilnym z Strftime określony jako argument. Aby na przykład uruchomić produkcję w formacie rok/miesiąc/dzień, uruchomimy:

$ okno dialogowe-Date-Format%T/%m/%D-Calendar „Wybierz datę” 0 0 27 05 2020

Poproś użytkownika do potwierdzenia: Widżet Yesno

Napotkaliśmy już ten widżet: pozwól nam wyświetlać użytkownika do potwierdzenia. Podczas korzystania z niego określamy pytanie, które należy zadać za pośrednictwem tekst parametr. W zależności od wyboru użytkownika zwracany jest status wyjścia: 0 Jeśli użytkownik potwierdza, klikając Tak przycisk, 1 W przeciwnym razie.

Aby wywołać ten widżet, musimy użyć --tak nie opcja:

$ dialog - -yesno "Czy potwierdzasz?"0 0

Oto widżet:



Zarządzanie wyjściem wytwarzanym przez widżet

Domyślnie wyjście wytwarzane przez widżet jest wyświetlane na STDERR, więc na przykład do przechowywania danych uzyskanych z widżetu do pliku, wszystko, co musimy zrobić, to przekierować Stderr Do wspomnianego pliku (jeśli nie znasz przekierowań, możesz przyjrzeć się samouczkowi wprowadzenia do przekierowań powłoki bash):

$ okno dialogowe -CheckList „Wybierz elementy:” 0 0 0 \ 1 ”Wybór numer jeden„ Off \ 2 ”Wybór numer dwa” na \ 3 "Wybór numer trzy„ Off \ 4 "Choice Numer Four" na 2> Wybór.tekst

Gdy użytkownik potwierdzi swoje wybory, zostaną zapisane, oddzielone przestrzenią do wybór.tekst plik.

Co jeśli chcemy przechowywać wybór bezpośrednio w zmienną? Aby wykonać zadanie, musimy użyć --Stdout opcja, tak aby wyjście widżetu były wyświetlane stdin zamiast Stderr:

$ choices = "$ (okno dialogowe --stdout -checkList" Wybierz elementy: "0 0 0 \ 1" Wybór numer jeden „Off \ 2" Choice Numer dwa „Wybór numer trzy„ Off \ 4 ”numer wyboru cztery „na)”


W powyższym przykładzie wynik przetwarzania widżetu będzie dostępny za pośrednictwem wybory zmienny. Być może możemy chcieć się nad nimi zapętać:

$ dla wyboru w $ wyborach; echo "$ Choice"; Zrobione 2 4

Aby zarządzać procesem tak nie widżet, musimy zachowywać się inaczej. Widget, jak już widzieliśmy, nie wytwarza żadnego wyjścia, ale zmienia kod wyjściowy polecenia używanego do niechęci do jego odpowiednim wyboru użytkownika. Jeśli użytkownik potwierdza i odpowiedzi potwierdzają pytanie, kod wyjścia jest ustawiony 0, inaczej do 1 (To może wydawać się dziwne, ale pamiętaj o tym 0 oznacza OK chwila 1 jest statusem wyjścia, który oznacza, że ​​polecenie nie było powotki). Wiedząc o tym, możemy napisać coś w stylu:

Jeśli okno dialogowe--yesno „Czy chcesz otworzyć instancję gnome-terminal ?"0 0; następnie wyczyść gnome-końcowe fi 

Wnioski

W tym samouczku widzieliśmy, jak możemy użyć dialog aplikacja do użycia ncurses Widżet w skorupach. Najpierw widzieliśmy kilka typowych opcji, które można używać niezależnie od typu widżetu, niż spojrzeliśmy na niektóre widżety. Istnieje wiele innych widżetów, które można użyć dialog: Pełna lista sugeruję, abyś rzucił okiem na podręcznik aplikacji.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Jak zintegrować okno dialogowe z skorupami z Whiptail
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Pierwsze kroki z tkinter na samouczek Python
  • Zagnieżdżone pętle w skryptach Bash
  • Rzeczy do zainstalowania na Ubuntu 22.04
  • Polecenia Linux: Top 20 najważniejsze polecenia, które musisz…
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 22.04 JAMMY Jellyfish…
  • Podstawowe polecenia Linux
  • Zainstaluj Arch Linux na stacji roboczej VMware