#!/bin/sh # # セーラームーン辞書 Ver.6 かんな辞書登録スクリプト # # 1994/11/17 るなお GHF02216@niftyserve.or.jp オリジナル作成 # 1994/12/13 Where() をちょっと変更、Where2() を追加 # chmod u+w $HOME/.canna の追加 # $HOME/.canna が無いとき default.canna をコピー # 1994/12/15 uninstall を追加 # 1994/12/16 wtoc の出力ファイルの行末につくスペース 0x20 を削除 # mkdic, rmdic のエラー報告を追加 # # 必要なコマンド: かんな付属コマンド wtoc, mkdic, rmdic # UNIX標準コマンド cut, sed #---- 登録する辞書名 ---- dics="s_char1 s_char2 s_other s_staff s_title s_waza" #---- 元辞書ファイルの位置 ---- srcdir=../.. #---- かんなツールの検索ディレクトリ ---- cannabin="/usr/local/canna/bin /usr/local/bin /usr/necbin" #---- default.canna の検索ディレクトリ ---- cannalib="/usr/local/canna/lib /usr/lib/canna" #### 実行ファイルを検索するサブルーチン #### # input: $1 検索するコマンド名 # $2... 検索するディレクトリのリスト # output: $ret コマンドのパス名 Where() { f=$1 shift lang=$LANG; LANG=C ret=`type $f 2> /dev/null |cut -d" " -f2,2` LANG=$lang if [ /$ret = /is ]; then ret=$f echo OK! $f は PATH 中にあるみたいね ☆ else for d in $* n_found do if [ -x $d/$f ]; then ret=$d/$f break fi done if [ $d = n_found ]; then echo あらぁ〜? $f がみつからないわ? echo $f コマンドのフルパス名を教えて。 ret="" read ret while [ -t ] do if [ /$ret = / ]; then break fi if [ -x ${ret}/$f ]; then ret=${ret}/$f break fi if [ -x ${ret}$f ]; then ret=${ret}$f break fi if [ -x $ret ]; then break fi echo $ret なんてみつからないわ。 echo もう一度 $f コマンドのフルパス名を入力してね。 read ret done fi if [ /$ret != / ]; then echo OK! $ret を使うわよ ☆ fi fi } #### ファイルを検索するサブルーチン #### # input: $1 検索するファイル名 # $2... 検索するディレクトリのリスト # output: $ret ファイルのパス名 Where2() { f=$1 shift for d in $* n_found do if [ -f $d/$f ]; then ret=$d/$f break fi done if [ $d = n_found ]; then echo あらぁ〜? $f がみつからないわ? echo $f のフルパス名を教えて。 ret="" read ret while [ -t ] do if [ /$ret = / ]; then break fi if [ -f ${ret}/${f} ]; then ret=${ret}/${f} break fi if [ -f ${ret}${f} ]; then ret=${ret}${f} break fi if [ -f $ret ]; then break fi echo $ret なんてみつからないわ。 echo もう一度 $f のフルパス名を入力してね。 read ret done fi } #### 辞書の変換と登録 #### Convert() { ## wtoc の指定 echo まずは Wnn辞書をかんな辞書に変換するコマンド、wtoc を探すわね。 Where wtoc $cannabin if [ /$ret = / ]; then echo wtoc がなくては辞書の変換ができないわ。 echo それでは、ごきげんよう。 exit 1 fi wtoc=$ret echo ## mkdic の指定 echo 次に辞書の登録\(アップロード\)をするコマンド、mkdic を探すわね。 Where mkdic $cannabin if [ /$ret = / ]; then echo mkdic がなくては辞書登録ができないわ。 echo それでは、ごきげんよう。 exit 2 fi mkdic=$ret echo ## 辞書変換と登録 failed="" for f in $dics do echo $f を辞書変換してま〜す! if [ -f $srcdir/$f.euc ]; then # なんか「固有名詞(#KK)」ってのは気持悪いので # 「名詞(#T35)」に変換しちゃおうかな # $wtoc $srcdir/$f.euc |sed -e 's/\\040\\/\\ /g' -e 's/ *$//' -e 's/#KK/#T35/' > $f.t $wtoc $srcdir/$f.euc | sed -e 's/\\040\\/\\ /g' -e 's/ *$//' > $f.t echo $f を辞書登録するわよ。 $mkdic -l $f.t $f if [ $? != 0 ]; then failed="${failed} $f" # 登録失敗 fi else echo あらぁ? $srcdir/$f.euc がないわ? とりあえず無視して先にすすむわよ。 fi echo done echo echo 辞書の登録、おわったわよ。 echo if [ "$failed" != "" ]; then echo でも、$failed は登録に失敗してます。注意してね。 echo fi } #### $HOME/.canna の設定 #### DotCanna() { ## $HOME/.canna がなかったら default.canna をコピーする if [ -f $HOME/.canna ]; then dotcanna=exist else dotcanna=not_exist Where2 default.canna $cannalib if [ /$ret = / ]; then echo $HOME/.canna も default.canna もみつからないみたいだから、 echo $HOME/.canna の自動設定は中止するわね。さようなら。 exit 3 fi echo $HOME/.canna が無いから $ret を $HOME/.canna にコピーするわね。 cp $ret $HOME/.canna fi ## もしかしたら $HOME/.canna は R/O かもしれない chmod u+w $HOME/.canna ## (use-dictionary :user "辞書名") が無かったら追加 for d in $dics do if [ $dotcanna = not_exist ]; then ## もともと $HOME/.canna は無かったから、問い合わせしないで追加 echo "(use-dictionary :user \"$d\") ; s-dic Ver.6" >> $HOME/.canna echo "(use-dictionary :user \"$d\") ; s-dic Ver.6" を追加したわ。 else grep $d $HOME/.canna > /dev/null if [ $? != 0 ]; then echo \""(use-dictionary :user \"$d\") ; s-dic Ver.6"\" を .canna に追加するわよ。 echo "(use-dictionary :user \"$d\") ; s-dic Ver.6" >> $HOME/.canna else echo $d はもう $HOME/.canna に登録されてるわね。 fi fi done echo echo OK! $HOME/.canna の設定は終ったわ ☆ } Echo_c() { echo $*\\c } BinEcho_c() { /bin/echo $*\\c } #### スタート #### echo こんにちは! 私、火野レイちゃんです。 t=`echo -n a;echo b` if [ "$t" = "ab" ]; then Echo_n="echo -n" else t=`/bin/echo -n a;echo b` if [ "$t" = "ab" ]; then Echo_n="/bin/echo -n" else t=`echo a\\c;echo b` if [ "$t" = "ab" ]; then Echo_n=Echo_c else t=`/bin/echo a\\c;echo b` if [ "$t" = "ab" ]; then Echo_n=BinEcho_c else Echo_n=echo fi fi fi fi case /$1 in /uninstall ) echo セーラームーン辞書を削除します★ echo $Echo_n 本当にセーラームーン辞書を削除してもいい? \(y/n\) ret="" read ret if [ ! /$ret = /y -o /$ret = /Y ] ; then echo 辞書の削除を中止するわね。 exit 0 fi echo 辞書の削除に rmdic を使うの。いま探すわね。 ## rmdic を探す Where rmdic $cannabin echo if [ /$ret = / ]; then echo rmdic がなくては辞書の削除ができないわ。 echo それでは、ごきげんよう。 exit 1 fi rmdic=$ret ## rmdic で辞書を削除する failed="" for f in $dics do $rmdic $f if [ $? != 0 ]; then failed="${failed} $f" # 削除失敗 fi done echo echo 辞書の削除は終ったわよ。 echo if [ "$failed" != "" ]; then echo でも、$failed は削除にに失敗したみたい。注意してね。 echo fi echo 次に $HOME/.canna の設定を変更するわね。 ## $HOME/.canna から "s-dic" という文字列を含む行を削除 if [ ! -f $HOME/.canna ]; then echo あらぁ? $HOME/.canna がないわよ? echo じゃあ、またね。 exit 1; else temp=/tmp/cannainstall$$ sed /s-dic/d $HOME/.canna > $temp mv $HOME/.canna $HOME/.canna~ mv $temp $HOME/.canna fi echo OK! $HOME/.canna の設定を変更したわよ。 ;; /.canna ) ## .canna の設定だけ実行 echo $HOME/.canna の設定をするわよ★ echo DotCanna ;; /install | / ) echo これからセーラームーン辞書をかんな辞書に変換して登録するわよ ★ echo Convert echo 次は $HOME/.canna の設定よ! echo DotCanna ;; * ) echo echo \"$1\" なんてオプションないわよ。 echo 使えるオプションは .canna と uninstall よ。 echo .canna は $HOME/.canna の設定だけするオプションで、 echo uninstall はセーラームーン辞書の削除をするオプションなの。 echo 正しいオプションを指定して、もう一度呼んでね。 ;; esac echo echo じゃあ、またね ★