GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Hinzufügen einer einfachen GUI zu Linux-Shell-Skripten mit kdialog

Shell-Skripte sind unglaublich nützliche Dinge. Sie ermöglichen es Ihnen, etwas so Einfaches zu tun, wie das Erstellen eines einfachen Befehls, um einen schwierigeren mit vielen Flags zu ersetzen, oder das Stapeln vieler komplexer Befehle, die von einem Cron-Job ausgeführt werden sollen. Sie sind großartig, weil Sie sie schnell in Ihrem bevorzugten Terminal abfeuern können, aber in einigen Fällen müssen Sie sich bestimmte Kombinationen von Flags oder Optionen merken. Wenn Sie sich in dieser Situation wiederfinden, können Sie einige einfache GUI-Dialoge hinzufügen, die Ihnen helfen, schneller durch die anstehende Aufgabe zu kommen.

Um dieses Tutorial nutzen zu können, benötigen Sie Folgendes:

  • Zugriff auf eine Unix-ähnliche Shell (dies wurde für Bash geschrieben).

  • macOS- und *nix-Betriebssysteme (wie Linux) sollten mit diesem oder einem ähnlichen geliefert werden.

  • Unter Windows können Sie die CygWin-Umgebung installieren oder unter neueren Versionen von Windows 10 das „Windows-Subsystem für Linux“

    verwenden
  • Die Basisbibliotheken für die KDE-Desktopumgebung. Sie brauchen das Ganze nicht, besonders wenn Sie bereits eine andere DE installiert haben.

Die Installation von kdialog sollte nur notwendig sein, wenn Sie mit einer Desktop-Umgebung andere begonnen haben als KDE, und Sie haben keine anderen KDE-Anwendungen auf Ihrem Rechner. Es ist ein Teil des Pakets kde-baseapps-bin auf Ubuntu, was bedeutet, dass es standardmäßig auf Kubuntu installiert ist. Auf anderen Derivaten können Sie es mit dem folgenden Befehl am Terminal installieren:

Kdialog vom Terminal installieren.

sudo apt-get install kde-baseapps-bin

Dies wird wahrscheinlich zu einer umfangreichen Installation führen, da andere KDE-Bibliotheken und -Pakete zusammen mit installiert werden. Aber hey, Festplattenspeicher ist billig, oder?

Da Skripte (im Allgemeinen) Dinge automatisch erledigen sollen, müssen wir diesen Dialog nur in den folgenden Situationen anzeigen:

  • Wenn wir eine Art Eingabe vom Benutzer erfassen müssen, oder;

  • Wenn wir dem Benutzer irgendeine Art von Feedback auf erkennbare Weise zeigen wollen (d. h. nicht nur irgendeinen Text, der in die Befehlszeile gespuckt wird).

Nehmen wir das Beispiel der Verwendung eines Befehls zum [Sichern Ihrer Drupal-Site mit drush]. Da Sie ein angehender Internetunternehmer sind, haben Sie natürlich nicht nur eine Drupal-Site –? du hast drei. Sie müssen lieber keine separaten Befehle ausführen, wenn Sie alle Ihre Sites sichern möchten, aber gleichzeitig möchten Sie sich keinen langen Pfad merken müssen, wenn Sie nur einen Schnappschuss machen möchten. Wir können ein paar Dialoge verwenden, um uns selbst zu helfen, indem wir:

  • Präsentieren Sie dem Benutzer eine Liste der Websites, die wir sichern können, und lassen Sie ihn eine Auswahl treffen, und;

  • Zeigen Sie dem Benutzer eine Nachricht, die das Ergebnis bestätigt, ob es erfolgreich oder fehlgeschlagen ist.

kDialog funktioniert, indem es in der Befehlszeile zusammen mit einem Dialogtyp aufgerufen wird , alle Parameter, die dieser Typ möglicherweise erfordert, und alle anderen Optionen, wie z. B. ein Dialogtitel.

Es gibt eine große Auswahl an Dialogtypen, aus denen Sie je nach Bedarf wählen können, wie folgt:

kDialog-Typen
Dialogtyp Beispielbild Beschreibung

Informationsmeldungsfelder

Zeigt ein Feld mit einer „OK“-Schaltfläche zum Schließen an, das eine Textnachricht und entweder ein „unkritisches“ Informations-, Warn- oder Fehlersymbol bereitstellt.

Passives Popup

Dies zeigt eine Nachricht an, die innerhalb weniger Sekunden verschwindet, d. h. der Benutzer muss sie nicht schließen oder schließen.

Ja/Nein-Nachrichtenfeld

Wie die „Informationsmeldungsfelder“ zeigt dies ein Dialogfeld mit einem Informations-/Warnungs-/Fehlersymbol an, das dem Benutzer auch die Auswahl „Ja“ oder „Nein“ bietet.

Eingabedialogfelder

Dies stellt ein einzelnes Feld bereit, in das der Benutzer Text eingeben kann.

Dateianzeigefelder

Dies zeigt den Inhalt einer (einfachen Text-)Datei in einem Dialogfeld an.

Menü- und Auswahldialogfelder

Dadurch wird ein Dialog mit einer Liste von Elementen bereitgestellt, der es dem Benutzer ermöglicht, eine oder mehrere Auswahlen zu treffen:

  • Die Dialoge Menü und Radioliste erlauben die Auswahl einer Option.

  • Der Checklistendialog ermöglicht die Auswahl einer, mehrerer oder aller Optionen.

  • Der Combobox-Dialog ermöglicht die Auswahl einer Option über ein Dropdown-Menü.

Dialogfelder zur Dateiauswahl

Der Benutzer kann einen Teil des Dateisystems auswählen, einschließlich:

  • Wählen Sie vorhandene Dateien aus, mit der Möglichkeit, nach Name oder Dateityp zu filtern

  • Geben Sie ein neues einer neuen Datei ein, die gespeichert/aktualisiert werden soll

  • Verzeichnisse

Fortschrittsdialoge

Der Benutzer kann kDialog mit dem dcop-Befehl kombinieren, um einen Dialog zu erstellen, der den Benutzer über den Fortschritt einer Operation informiert.

Wenn man sich die obigen Optionen ansieht, stechen zwei davon als potenziell heraus:

  • Im "Checklistendialog" können wir eine oder alle unserer Websites zum Sichern auswählen.

  • Die "Information Message Box" kann verwendet werden, um anzuzeigen, ob diese erfolgreich waren oder fehlgeschlagen sind.

Angesichts dieser Optionen können wir uns vorstellen, dass unser Skript in etwa so aussieht:

SITE1 is located HERE (make these full paths, not relative paths)
SITE2 is located THERE
SITE3 is located IN ANOTHER PLACE

display a kDialog with SITE1, SITE2, and SITE3 as options
    and tell me which one(s) the user picks

for each one the user picked:
    run +drush ard+ on that site, and
    record whether it was successful or not.

display another +kDialog+ with each of those results.

Lassen Sie uns in diesem Sinne gleich loslegen.

Als erstes sollten wir den Drush-Befehl zusammenstellen, den wir auf jede ausgewählte Site anwenden möchten. Angenommen, alle Sites befinden sich auf demselben Webhost in verschiedenen Verzeichnissen, aber wir möchten die Backups in einem gemeinsamen „Backup“-Verzeichnis speichern. Wir können Folgendes verwenden:

cd SITE
drush ard --destination=/home/user/backup/SITENAME.tar.gz

Mit Ihrem Wissen über das Setzen von Variablen und for-Schleifen können wir dieses Skript wie folgt erstellen:

#! /bin/bash

// Note: create variables to hold paths to all the sites
PERSONALSITE='/home/www/mypersonalsite/'
BUSINESSSITE='/home/www/mybusinesssite/'
HOBBYSITE='/home/www/myhobbysite/'

// Note: create variable to hold path to the destination
DESTINATION='/home/user/backup'

// Note: display a dialog asking the user to select which sites to back-up
CHOICES=$(kdialog --checklist "Select sites to back-up:" 1 "Personal site" off 2 "Business Site" off 3 "Hobby site" off)

// Note: log a success/failure message for each of the choices returned from dialog
for each in $CHOICES
do
    case {
        1)
            cd $PERSONALSITE
            drush ard --destination=$DESTINATION/mypersonalsite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Personal site backup: Succeeded\n"
            else
                RESULTS += "Personal site backup: Failed\n"
            fi
        2)
            cd $BUSINESSSITE
            drush ard --destination=$DESTINATION/mybusinesssite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Business site backup: Succeeded\n"
            else
                RESULTS += "Business site backup: Failed\n"
            fi
        3)
            cd $HOBBYSITE
            drush ard --destination=$DESTINATION/myhobbysite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Hobby site backup: Succeeded\n"
            else
                RESULTS += "Hobby site backup: Failed\n"
            fi
    esac

// NOTE: display a dialog with the results of all the backup operations.
kdialog --msgbox $RESULTS

Wenn wir dies speichern und wie im ersten Artikel der Bash-Serie beschrieben ausführen können, können wir einen einzelnen Befehl ausführen, einen benutzerfreundlichen Dialog zur Auswahl unserer Site erhalten und dann ein nettes Fenster mit Berichten sehen zurück, wie alles gelaufen ist.

Obwohl dieses Skript sicherlich auf verschiedene Arten optimiert werden kann, zeigt es, wie Sie kdialog verwenden können, um einige Benutzereingaben zu sammeln und einige Ergebnisse anzuzeigen, indem Sie ein einzelnes Programm in Ihrem Skript ausführen.


Linux
  1. Rechnen Sie in der Linux-Shell mit GNU bc

  2. Die einfachsten Linux-Befehle mit 10 Beispielen

  3. Warum einen Linux-Shell-Befehl mit '&' ausführen?

  4. Wie geht Linux mit Shell-Skripten um?

  5. Templating mit Linux in einem Shell-Skript?

So erstellen Sie GUI-Dialogfelder in Bash-Skripten mit Zenity in Linux und Unix

So erstellen Sie GUI-Dialogfelder in Bash-Skripten mit Whiptail in Linux

Shell-Scripting für Anfänger – So schreiben Sie Bash-Scripts unter Linux

Einfache Möglichkeiten zum Generieren eines zufälligen Passworts in der Linux-Shell

50 einfacher und nützlicher Linux-Cut-Befehl in Unix mit Beispielen

Hinzufügen neuer Benutzer in Linux mit dem Useradd-Befehl