- Linux Mint を始めたばかりの人が抑えておくべき5つのこと
- 「mintUpdate」アップデートマネージャー のレベルの意味
- フリーズしたアプリの強制終了の仕方 〜 kill コマンド〜
- CPU と OS が 32 bit なのか 64 bit なのかを確認する「lscpu コマンド」
- メモリー(RAM)の規格・周波数・全容量・空き容量・エラーの有無を調べる
- 自分の Mint のバージョン/コードネーム/Ubuntu のバージョン/コードネームを確認する方法
- Mint Tools を使い倒す
- アプリ/ソフトのアンインストールと更新する方法
- X-Apps について少し知っておこう
- 「'gksu' not found」 廃止された gksu の代わりの方法
- Linux Mint 18 : DVD/Blu-ray リッピングソフト「MakeMKV」
- Mint 19.x: 「K3b」でブルーレイディスクに焼く方法
- Mint 18: 「avconv」でデスクトップの録画も、動画や音楽の変換も行う
- Mint 19.x : 画像・音楽・動画の変換これ一本「Ciano」
- Mint 18.2 : 字幕を同時に二つ表示できる多機能な動画プレイヤー「SMPlayer」
- Mint 18 : CDDB に Freedb を利用している CD リッピングソフト「Asunder」
- Mint 19.x : 音楽ファイルのタグ編集ツール「Kid3」
- Linux Mint 19.x : インストールすべき Rhythmbox プラグイン 9 選
- Linux Mint 18.3 : VirtualBox に無料の Windows を合法的にインストールする方法
- Linux Mint 18: Wine の導入
- Linux Mint 18: Wine で「DVD Shrink」をインストール
- Linux Mint 18: Wine で「DVD Decrypter」をインストール
- Linux Mint 19.x: 5ch専ブラ「Jane Style」は Wine で普通に使える
- Linux Mint 18 : 「winetricks」を使って「Adobe Air」をインストールし「はがきデザインキット」を使う
- Linux Mint 19.x: 画像縮小 Adobe AIR アプリ「縮小専用」を使う
- Linux Mint 18: 「PlayOnLinux」を使い「Amazon Kindle」をインストールする
- Linux Mint 18.3 : ハイレゾ音源対応 Windows ユーザーに人気の「Foobar2000」をインストール & 文字化け対策
- Mint 19.x : 画像ビューア「IrfanView」を簡単にインストールして使う
- Linux Mint 18.3 : Windows アプリを Flatpak 形式でパッケージングするプロジェクト「winepak」
2022.09.19 Monday
2019.03.01 Friday
Shell :シェルスクリプトを組もう! Dialog 編 | 08:00 |
Zenity よりはあまり知られていないかもしれませんが、シェルスクリプトの中でダイアログボックスを表示するのに使えるユーティリティーは他にもたくさんあり、今回は「dialog」を紹介します。dialog を使ってシェルスクリプトに GUI (的な要素)を組み込む方法を見ていきます。
dialog は以下の 8 種類のボックスを作ることができます:
- はい/いいえボックス
- メニューボックス
- 入力ボックス
- メッセージボックス
- テキストボックス
- 情報ボックス
- チェックリストボックス
- ラジオリストボックス
以下のコマンドはタイトルに「通知」、メッセージに「プログラムを開始します。」という 5 行分の高さと半角 30 文字分の横幅を持つメッセージボックスを表示します:
dialog --title "プログラムの開始" --msgbox "プログラムを開始します。" 5 30
基本的にダイアログボックスは dialog、続いてタイトル(オプション)、続いてボックスの種類、続いて表示したいメッセージ、最後にサイズを指定します。
次のコマンドでは <はい>・<いいえ> のボタンが下部に表示されます。<はい> が押されると 0 を返し、<いいえ> が押されると 1 を返します:
dialog --title "プログラムの続行" --yesno "プログラムを続行しますか?" 5 35
response=$?
case $response in
0) echo "はいが押されました";;
1) exit 0 ;;
esac
ダイアログボックスのサイズが小さすぎると文字が隠れてしまうので注意してください。
最初にメッセージボックスを見ましたが、インフォボックスも似たようなボックスです。違う点は、了解ボタンが無い点です:
dialog --infobox "しばらくお待ちください。" 10 30 ; sleep 4
入力ボックスはユーザーに文字列を入力させることができます。編集キー(恐らくバックスペースキーやデリートキーなどのことだと思います)も使用できます。テキストフィールドは必要な時スクロールします。データが入力された後、Stream 2 ("STDERR") に出力されますが、より一般的にはファイルに出力をリダイレクトして使います:
dialog --inputbox "ユーザー名は?:" 8 40 2>answer
return=$(cat answer)
echo $return
rm -f answer
テキストボックスはシンプルなファイルビューアーで、パラメータにファイル名を指定します。ここでは矢印キーや
Page Up
Page Down
Home
などが使えます。ESC
あるいはEnter
で抜け出せます:dialog --textbox /etc/profile 22 70
メニューは選択肢を表示し、ユーザーにどれか選ばせることができます。構文は以下の通りです:
dialog --menu "文字列" 高さ 幅 選択肢の数 1 選択肢1 2 選択肢2 3 選択肢3
ユーザーは矢印キーで移動した後、
Enter
を押すことで選択できます。Stream 2 ("STDERR") に出力されます。例えばこのような感じで使います:dialog --menu "一つ選んでください:" 10 30 3 1 赤 2 緑 3 青 2>temp
return=$(cat temp)
echo "あなたが選んだのは:"$return
rm -f temp
チェックリストではユーザーに選択肢のリストを表示しスペースで個別に ON/OFF を切り替えることができます。三つ目のフィールドにはデフォルトの ON/OFF を設定します:
dialog --checklist "使ったことのあるデスクトップ環境を選んで下さい:" 13 40 3 \
1 "Cinnamon" on \
2 "MATE" on \
3 "Xfce" off 2>temp
最後にラジオリストを取り上げます。基本的にはチェックリストと同じですが、ユーザーが選べるのは一つだけという違いがあります:
dialog --backtitle "Game Console Selection" \
--radiolist "一番好きなゲーム機は:" 10 40 4 \
1 "XBox One" off \
2 "Play Station 4" on \
3 "Nintendo Switch" off \
4 "Nintendo DS 3" off 2>temp
実際にスクリプトを組んでみる
北陸先端科学技術大学院大学のミラーサーバーから指定の Linux Mint 19.1 64bit をダウンロードするスクリプトです。簡単なスクリプトですが雰囲気はつかめると思います:
#!/bin/sh
dialog --backtitle "ダウンロードしたいエディションをえらでください:" --radiolist "一つ選んでください:" 10 40 3 1 "Cinnamon 64bit" on 2 "MATE 64bit" off 3 "Xfce 64bit" off 2>temp
# OK が押されたら
if [ "$?" = "0" ]
then
_return=$(cat temp)
# 1 を選んだ時
if [ "$_return" = "1" ]
then
url="http://ftp.jaist.ac.jp/pub/Linux/linuxmint/isos/stable/19.1/linuxmint-19.1-cinnamon-64bit.iso"
fi
# 2 を選んだ時
if [ "$_return" = "2" ]
then
url="http://ftp.jaist.ac.jp/pub/Linux/linuxmint/isos/stable/19.1/linuxmint-19.1-mate-64bit.iso"
fi
# 3 を選んだ時
if [ "$_return" = "3" ]
then
url="http://ftp.jaist.ac.jp/pub/Linux/linuxmint/isos/stable/19.1/linuxmint-19.1-xfce-64bit.iso"
fi
# キャンセルが押されたら
else
echo "取消が押されました。"
fi
dialog --menu "保存先を選んでください" 10 30 3 1 /tmp 2 ~/ダウンロード 3 ~/デスクトップ 2>temp
# OK が押されたら
if [ "$?" = "0" ]
then
_return=$(cat temp)
# /tmp を選んだ時
if [ "$_return" = "1" ]
then
wget "$url" -P /tmp
fi
# ~/ダウンロードを選んだ時
if [ "$_return" = "2" ]
then
wget "$url" -P $HOME/ダウンロード
fi
# ~/デスクトップを選んだ時
if [ "$_return" = "3" ]
then
wget "$url" -P $HOME/デスクトップ
fi
# キャンセルが押されたら
else
echo "取消が押されました。"
fi
# temp ファイルの削除
rm -f temp
参考元: Linux Journal
| プログラミング |
2022.09.19 Monday
Show some apps list:
Follow on your feed reader:
About this blog:
Linux Mint-centric chronicle with anime girls since 2009.Best View with Google Chrome 1980x1080 dimension.Info 更新は不定期です。
- Mint 18.3 : オススメ Python IDE 8 選
- Mint 18.3 : Python ではじめるコマンドラインツールの作成とパッケージ化
- Linux ユーザーなら Git を活用しよう
- Shell :シェルスクリプトを組もう! Zenity 編
- Shell :シェルスクリプトを組もう! Dialog 編