2005年4月23日

[vine-users:071645] Re: 端末からの入力をすべて

長南です。

# スレッドをつないでくださいというのは、同じ話題が続いている間は、
# メーラの返信機能を使って書いてくださいということです。新しい
# 質問なら、もちろん新規作成で。

「IME で半角の空白が出せるはず」という谷村さんのご意見に賛成です。
それが一番実用的な解決法だと思います。

でも、スクリプトで工夫してみたいのなら――


NIDA さんのメールより [vine-users:071639]
>
> 知りたいのは、
>
> "検索" と "キーワード" の間の区切り文字を全角文字で
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> できないか。
> ~~~~~~~~~~~~~
> ということです。

bash では、コマンドラインの区切り記号は半角空白とタブだけのようです
(| や ; などもそこに入れることができますが)。また read の入力の
ような場面でも、区切り記号に全角文字をうまく使えないようです。
そこまで多言語化が徹底していないということでしょう。ですから、
bash のプロンプトから「検索、キーワード、ファイル名」と打ち込んで、
「検索」というコマンドを実行することはできません。そのコマンドが
alias であれ、リンクであれ、たぶん不可能です。

もし、そういったことがしたいのなら、全角文字を区切り記号として扱う
シェルを自作することになります。あるいは、全角文字を区切り記号として
使えるように bash を書き直すか。

藤田さん、谷村さん、そして私が書いたのは、シェルスクリプトを使った
シェルの雛形ですが、谷村さんがお書きになったように、ちょっと手直し
すれば、全角を区切りに使えます。

[vine-users:071631] のスクリプトを書き直してみます。

$ cat minish
#!/bin/sh
while true
do
read -p "[minish]> " line
line=`echo $line |sed -e "s/[、, ,]/ /g"`
cmd=${line%% *}
args=`echo $line |sed -e "s/$cmd//"`
case $cmd in
検索)
eval egrep $args;;
時刻合わせ)
su -c "/usr/sbin/ntpdate ntp.hoge.ne.jp";;
終了)
echo "終了します"
exit;;
*)
eval $line;;
esac
done

もちろん、別の書き方もできますし、perl でやることもできます。

--
長南洋一

投稿者 xml-rpc : 2005年4月23日 14:45
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/13446
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。