GNU/Linux >> Linux の 問題 >  >> Linux

kdialogを使用してLinuxシェルスクリプトにシンプルなGUIを追加する

シェルスクリプトは非常に便利です。簡単なコマンドを作成して、より難しいコマンドを多くのフラグに置き換えたり、cronジョブから実行する多くの複雑なコマンドをバッチ処理したりするなど、基本的なことを行うことができます。お気に入りの端末ですばやく起動できるので便利ですが、場合によっては、フラグやオプションの特定の組み合わせを覚えておく必要があります。このような状況に陥った場合は、簡単なGUIダイアログを追加して、手元のタスクを迅速に進めることができます。

このチュートリアルを利用するには、次のものが必要です。

  • Unixライクなシェルへのアクセス(これはbashを念頭に置いて書かれています)。

  • macOSおよび*nixOS(Linuxなど)には、これまたは同様のものが付属している必要があります。

  • Windowsでは、CygWin環境をインストールできます。または、最近のバージョンのWindows 10では、「WindowsSubsystemforLinux」を使用します

  • KDEデスクトップ環境のベースライブラリ。特に別のDEがすでにインストールされている場合は、すべてが必要になるわけではありません。

kdialogのインストールは、デスクトップ環境で開始した場合にのみ必要ですその他 KDEよりも優れており、マシン上に他のKDEアプリケーションはありません。これはUbuntuのパッケージkde-baseapps-binの一部です。つまり、デフォルトでKubuntuにインストールされます。他の派生物では、ターミナルで次のコマンドを使用してインストールできます。

ターミナルからkdialogをインストールします。

sudo apt-get install kde-baseapps-bin

他のKDEライブラリやパッケージも一緒にインストールされるため、これによりかなりのインストールが行われる可能性があります。でもねえ、ハードドライブのスペースは安いですよね?

スクリプトは(一般的に)自動的に処理を行うことになっているため、次の状況でのみこのダイアログを表示する必要があります。

  • ユーザーからのある種の入力をキャプチャする必要がある場合、または;

  • ある種のフィードバックを目立つ方法でユーザーに表示したい場合(つまり、コマンドラインにテキストが表示されるだけではありません)。

コマンドを使用して[drushを使用してDrupalサイトをバックアップする]例を見てみましょう。もちろん、あなたは新進のインターネット起業家なので、Drupalサイトは1つだけではありません—?あなたは3つ持っています。すべてのサイトをバックアップする場合は、個別のコマンドを実行する必要はありませんが、同時に、1つのサイトのスナップショットを撮りたい場合は、長いパスを覚えておく必要はありません。いくつかのダイアログを使用して、次の方法で自分自身を助けることができます。

  • バックアップできるサイトのリストをユーザーに提示し、ユーザーが選択できるようにします。

  • 成功か失敗かにかかわらず、結果を確認するメッセージをユーザーに表示します。

kDialogは、コマンドラインでダイアログタイプとともに呼び出すことで機能します。 、タイプに必要なパラメータ、およびダイアログタイトルなどの他のオプション。

次のように、ニーズに応じてさまざまな種類のダイアログから選択できます。

ダイアログタイプ サンプル画像 説明
kDialogタイプ

情報メッセージボックス

閉じるための[OK]ボタンのあるボックスを表示し、テキストメッセージと、「重要ではない」情報、警告、またはエラーアイコンのいずれかを提供します。

パッシブポップアップ

これにより、数秒以内に消えるメッセージが表示されます。つまり、ユーザーがメッセージを閉じたり閉じたりする必要はありません。

はい/いいえメッセージボックス

「情報メッセージボックス」と同様に、これは情報/警告/エラーアイコンを含むダイアログを表示し、ユーザーが「はい」または「いいえ」を選択できるようにします。

入力ダイアログボックス

これにより、ユーザーがテキストを入力できる単一のボックスが提供されます。

ファイル表示ボックス

これにより、ダイアログボックス内に(プレーンテキスト)ファイルの内容が表示されます。

メニューと選択ダイアログボックス

これにより、アイテムのリストを含むダイアログが表示され、ユーザーは1つ以上の選択を行うことができます。

  • メニューダイアログとラジオリストダイアログでは、1つのオプションを選択できます。

  • チェックリストダイアログでは、1つ、複数、またはすべてのオプションを選択できます。

  • コンボボックスダイアログでは、ドロップダウンメニューを使用して1つのオプションを選択できます。

ファイル選択ダイアログボックス

ユーザーは、次のようなファイルシステムの一部を選択できます。

  • 名前またはファイルタイプでフィルタリングできる既存のファイルを選択します

  • 保存/更新する新しいファイルの新しいファイルを入力してください

  • ディレクトリ

進行状況ダイアログ

ユーザーは、kDialogとdcopコマンドを組み合わせて、操作の進行状況についてユーザーを更新するダイアログを作成できます。

上記のオプションを見ると、そのうちの2つが潜在的な可能性を秘めていると思います:

  • [チェックリストダイアログ]を使用すると、バックアップするサイトの1つまたはすべてを選択できます。

  • 「情報メッセージボックス」を使用して、これらのそれぞれが成功したか失敗したかを表示できます。

これらのオプションを考えると、スクリプトは次のようになります。

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.

それを念頭に置いて、すぐに飛び込みましょう。

最初に行うべきことは、選択されたときに各サイトに適用するdrushコマンドをアセンブルすることです。すべてのサイトが異なるディレクトリの同じWebホスト上にあるが、バックアップを共通の「バックアップ」ディレクトリに保存するとします。以下を使用できます:

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

したがって、変数の設定とforループの知識を使用して、このスクリプトを次のように作成できます。

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

これを保存して、Bashシリーズの最初の記事で説明したように実行できるようにすると、単一のコマンドを実行し、使いやすいダイアログを表示してサイトを選択し、ウィンドウレポートを表示できます。すべてがどのように進んだかを確認してください。

このスクリプトは確かにいくつかの方法で最適化できますが、スクリプト内で単一のプログラムを実行することにより、kdialogを使用してユーザー入力を収集し、結果を表示する方法を示しています。


Linux
  1. Linuxでシェルスクリプトを使用してJsonを解析する方法は?

  2. Linuxシェルで変数を使用して除算を行うにはどうすればよいですか?

  3. 「&」を使用して Linux シェル コマンドを実行するのはなぜですか?

  1. GNUbcを使用してLinuxシェルで数学を実行します

  2. Linux はシェル スクリプトをどのように処理しますか?

  3. シェル スクリプトで Linux を使用してテンプレートを作成しますか?

  1. Linuxの基本:Wgetを使用してシェルにファイルをダウンロードする方法

  2. 10 の例を含む最も単純な Linux コマンド

  3. 4 つのサンプル シェル スクリプトで説明されている Bash の特別なパラメーター