シェルスクリプトは非常に便利です。簡単なコマンドを作成して、より難しいコマンドを多くのフラグに置き換えたり、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は、コマンドラインでダイアログタイプとともに呼び出すことで機能します。 、タイプに必要なパラメータ、およびダイアログタイトルなどの他のオプション。
次のように、ニーズに応じてさまざまな種類のダイアログから選択できます。
情報メッセージボックス | 閉じるための[OK]ボタンのあるボックスを表示し、テキストメッセージと、「重要ではない」情報、警告、またはエラーアイコンのいずれかを提供します。 | |
パッシブポップアップ | これにより、数秒以内に消えるメッセージが表示されます。つまり、ユーザーがメッセージを閉じたり閉じたりする必要はありません。 | |
はい/いいえメッセージボックス | 「情報メッセージボックス」と同様に、これは情報/警告/エラーアイコンを含むダイアログを表示し、ユーザーが「はい」または「いいえ」を選択できるようにします。 | |
入力ダイアログボックス | これにより、ユーザーがテキストを入力できる単一のボックスが提供されます。 | |
ファイル表示ボックス | これにより、ダイアログボックス内に(プレーンテキスト)ファイルの内容が表示されます。 | |
メニューと選択ダイアログボックス | これにより、アイテムのリストを含むダイアログが表示され、ユーザーは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を使用してユーザー入力を収集し、結果を表示する方法を示しています。