標準出力

新しいもの、変わらないこと 自分の頭を通して考えてみました (stdout)

FreeBSD 9.0 のインストーラで使われてるのを試してみた

FreeBSD 9.0 のインストーラに採用されている。Dialogコマンドを試してみた。





dialog --title 'Hello Title' --msgbox 'Hello World' 5 20






ここで、5,20はそれぞれ、ダイアログボックスの縦と横のサイズ。
dialog --infobox 'Please wait' 10 30;sleep 4
sleep無しだとすぐプロンプトに戻る。
次は、シェルスクリプト(c shell)で

set NAME=`dialog --stdout --inputbox 'Enter your name:' 8 40`
echo "your inpted name is $NAME"

入力値の出力先を標準出力に変更しています(デフォルトは、標準エラー出力)。
次は、yes/no の選択

  1 dialog --title "title" --yesno "Are you ready?" 6 25
  2 switch($status)
  3         case '0':
  4           echo "Let's go !!"
  5           breaksw
  6         case '1':
  7           echo "Hurry up !!"
  8           breaksw
  9         default:
 10           echo "Invalid return val."
 11           breaksw
 12 endsw

次は、先ほどのシェルスクリプトを閲覧する
dialog --textbox main.csh 10 60

スクロールも可能になっている。j/kのvimキーバインドでもスクロールできる。
次は、複数のリストから一つを選択。

  1 set COLOR=`dialog --menu --stdout "Choose one:" 10 30 2 1 red 2 green 3 blue    ` # 10-> ボックスの高さ 30-> ボックスの幅 2 -> メニューの高さ
  2 switch ($COLOR)
  3         case 1:
  4           echo "You choosed red"
  5           breaksw
  6         case 2:
  7           echo "You choosed green"
  8           breaksw
  9         case 3:
 10           echo "You choosed blue"
 11           breaksw
 12 endsw


項目数よりメニューの高さが小さいとスクロールできるようになります。
次は、portsコンパイルでおなじみ複数の項目を選択する。checklist スペースで項目の選択/非選択をスイッチします。

  1 set LIST=`dialog --stdout --separate-output --checklist "test" 10 40 3 \
  2         1 first item \
  3         2 secound item \
  4         3 third item`
  5 foreach i ($LIST)
  6         echo "Proccessing for $i"
  7 end



次は、複数の項目から1つの項目を選択する。RadioBox

  1 set ITEM=`dialog --stdout --backtitle "Your OS" --radiolist "Select your OS.    " 10 40 4 1 Windows off 2 Mac on 3 Linux off 4 FreeBSD off`
  2 echo "Your OS is $ITEM"



参考サイト: http://www.linuxjournal.com/article/2807?page=0,0