GNU/Linux >> Linux Esercitazione >  >> Linux

Aggiunta di una semplice GUI agli script della shell di Linux con kdialog

Gli script di shell sono cose incredibilmente utili. Ti consentono di fare qualcosa di semplice come creare un comando facile per sostituire uno più difficile con molti flag, per raggruppare molti comandi complessi da eseguire da un lavoro cron. Sono fantastici perché puoi attivarli rapidamente nel tuo terminale preferito, ma in alcuni casi richiedono che tu ricordi combinazioni specifiche di flag o opzioni. Se ti trovi in ​​questa situazione, puoi aggiungere alcune semplici finestre di dialogo della GUI per aiutarti a velocizzare l'esecuzione dell'attività in corso.

Per utilizzare questo tutorial, avrai bisogno di quanto segue:

  • Accesso a una shell simile a Unix (questo è scritto pensando a bash).

  • macOS e *nix OS (come Linux) dovrebbero avere questo o uno simile.

  • Su Windows, puoi installare l'ambiente CygWin, oppure su versioni recenti di Windows 10 utilizzare il "Sottosistema Windows per Linux"

  • Le librerie di base per l'ambiente desktop KDE. Non hai bisogno dell'intera cosa, soprattutto se hai già installato un altro DE.

L'installazione di kdialog dovrebbe essere necessaria solo se hai iniziato con un ambiente desktop altro di KDE e non hai altre applicazioni KDE sulla tua macchina. Fa parte del pacchetto kde-baseapps-bin su Ubuntu, il che significa che è installato di default su Kubuntu. Su altri derivati, puoi installarlo con il seguente comando al terminale:

Installazione di kdialog dal terminale.

sudo apt-get install kde-baseapps-bin

Ciò risulterà probabilmente in un'installazione considerevole, poiché altre librerie e pacchetti di KDE verranno installati insieme ad esso. Ma ehi, lo spazio sul disco rigido è poco, giusto?

Poiché gli script dovrebbero (in generale) fare le cose automaticamente, dovremo mostrare questa finestra di dialogo solo nelle seguenti situazioni:

  • Se abbiamo bisogno di acquisire una sorta di input dall'utente, oppure;

  • Se vogliamo mostrare all'utente una sorta di feedback in modo evidente (cioè non solo del testo sputato sulla riga di comando).

Prendiamo l'esempio dell'uso di un comando per [fare il backup del tuo sito Drupal usando drush]. Naturalmente, dal momento che sei un imprenditore di Internet in erba, non hai solo un sito Drupal? ne hai tre. Preferiresti non dover eseguire comandi separati quando desideri eseguire il backup di tutti i tuoi siti, ma allo stesso tempo non vuoi dover ricordare un lungo percorso se vuoi scattare un'istantanea di uno solo. Possiamo usare un paio di dialoghi per aiutarci:

  • Presentare all'utente un elenco di siti di cui possiamo eseguire il backup, e come lei per fare una scelta, e;

  • Mostra all'utente un messaggio di conferma del risultato, che si tratti di un successo o di un fallimento.

kDialog funziona chiamandolo dalla riga di comando insieme a un tipo di dialogo , tutti i parametri che il tipo potrebbe richiedere e qualsiasi altra opzione come il titolo di una finestra di dialogo.

È disponibile una buona varietà di tipi di finestre di dialogo tra cui scegliere in base alle proprie esigenze, come segue:

Tipi di kDialog
Tipo di dialogo Immagine campione Descrizione

Caselle dei messaggi informativi

Visualizza una casella con un pulsante "OK" per chiudere, fornendo un messaggio di testo e un'informazione "non critica", un avviso o un'icona di errore.

Pop-up passivo

Viene visualizzato un messaggio che scompare entro pochi secondi, ovvero non richiede all'utente di chiuderlo o ignorarlo.

Sì/No Casella di messaggio

Come le "Finestre dei messaggi di informazioni", viene visualizzata una finestra di dialogo con un'icona di informazioni/avviso/errore che fornirà anche la selezione dell'utente di "Sì" o "No".

Finestre di dialogo di immissione

Ciò fornisce una singola casella in cui l'utente può digitare del testo.

Caselle di visualizzazione dei file

Verrà visualizzato il contenuto di un file (di testo normale) all'interno di una finestra di dialogo.

Menu e finestre di dialogo di selezione

Ciò fornisce una finestra di dialogo con un elenco di elementi, consentendo all'utente di effettuare una o più selezioni:

  • Le finestre di dialogo Menu e Radiolist consentono di selezionare un'opzione.

  • La finestra di dialogo Elenco di controllo consente di selezionare una, più o tutte le opzioni.

  • La finestra di dialogo Combobox consente la selezione di un'opzione utilizzando un menu a discesa.

Finestre di dialogo per la selezione dei file

L'utente può selezionare parte del filesystem, tra cui:

  • Seleziona i file esistenti, con la possibilità di filtrare per nome o tipo di file

  • Immettere un nuovo di un nuovo file da salvare/aggiornare

  • Directory

Finestre di avanzamento

L'utente può combinare kDialog con il comando dcop per creare una finestra di dialogo che aggiorna l'utente sullo stato di avanzamento di un'operazione.

Esaminando le opzioni di cui sopra, due di esse saltano fuori come dotate di potenziale:

  • La "finestra di dialogo dell'elenco di controllo" ci consentirà di selezionare uno o tutti i nostri siti di cui eseguire il backup.

  • La "Casella dei messaggi informativi" può essere utilizzata per visualizzare se ognuno di questi è riuscito o meno.

Date queste opzioni, possiamo immaginare che il nostro script sia simile a questo:

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.

Con questo in mente, tuffiamoci subito.

La prima cosa che dovremmo fare è assemblare il comando drush che vogliamo applicare a ciascun sito quando viene selezionato. Supponiamo che tutti i siti si trovino sullo stesso host web in directory diverse, ma vogliamo archiviare i backup in una directory di "backup" comune. Possiamo usare quanto segue:

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

Quindi, usando la tua conoscenza dell'impostazione delle variabili e dei cicli for, possiamo creare questo script come segue:

#! /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

Se salviamo questo e facciamo in modo che possiamo eseguirlo come descritto nel primo articolo della serie Bash saremo in grado di eseguire un singolo comando, ottenere una finestra di dialogo facile da usare per scegliere il nostro sito, quindi vedere una bella finestra di segnalazione torna come è andato tutto.

Sebbene questo script possa certamente essere ottimizzato in un paio di modi, mostra come puoi usare kdialog per raccogliere alcuni input dell'utente e visualizzare alcuni risultati eseguendo un singolo programma all'interno del tuo script.


Linux
  1. Fai calcoli nella shell Linux con GNU bc

  2. Nozioni di base su Linux:come scaricare file sulla shell con Wget

  3. Come analizzare Json con lo script della shell in Linux?

  4. Come posso eseguire la divisione con le variabili in una shell Linux?

  5. Creazione di modelli con Linux in uno script Shell?

Come creare finestre di dialogo della GUI negli script Bash con Zenity in Linux e Unix

Come creare finestre di dialogo della GUI negli script Bash con Whiptail in Linux

Script di shell per principianti - Come scrivere script Bash in Linux

Semplici modi per generare una password casuale su Linux Shell

50 Comando Linux Cut semplice e utile in Unix con esempi

Aggiunta di nuovi utenti in Linux con il comando Useradd