|
>DOSの頃はこれが無かったので、長いコマンドでミスタイプすると >大変でした。 DOSでも、TSRを使えば、補完可能でした… というより、これがなければ、DOSのコマンドラインを使う気には なりませんでした。 私が使っていたのは、history.com というもので、コマンドライン 上での行編集機能、ヒストリー機能、補完機能、別名機能などが ありました。 ただ、unix上の補完機能の解説って読んだ覚えがないので、 本家のものがどういう仕様になっていたのか、できれば知りたいです。 DOSの場合、カレントに abc.exe というファイルがあって、 コマンドラインの先頭で a を入力して、補完機能を使うと、 abc というようなコマンド名(.exeがない)の補完が行われます。 でも、unixの場合は、補完は引数ファイルだけだという話を聞いた ような気もしたりしますんで…(違ったかも知れない(^^;) >dcは逆ポーランドで記述する計算機です。 少し前までなら、まだ逆ポーランド記法の電卓を使ってる人がいる って話を聞いたことがあるんですが、もう絶滅したかな…(笑い) 確か、FORTHも逆ポーランドだったような…? |
|
.>実はbcやdcはかなり高機能なので、あの解説だけでは不十分かも > しれませんが、どの程度の解説をお望みで?(でも僕はあれ以上の > ことは知りません) 実行させたいのは、プログラムが出力した(文字列)データを表計算のように 単純な合計や平均の演算を行いたいのです。 入力データは、いくつかの固定のデータ数を一つのグループとして(つまり行に相当) 扱いたいのです。 こんな具合です; " 10 22 110 20 30 200 5 25 300" この例では; 10 22 110 が一行目のデータ 20 30 200 が二行目 5 25 300 が三行目 として扱い、 一列目の合計を求める bc コマンド記述を実行すると 35 が求まり、 二列目の平均を求める bc コマンド記述を実行すると 25.6 が返ってくると いった使い方をしたいのですが。 そして、bcコマンドに実行させる処理内容は、C-shell でデータに合わせて Generate させようと考えています。 bc コマンドにこんなことを望めますか?コンパイルさせずに演算結果を 取り込みたいというのがこの目的です。 |
|
やはりみなさん知ってますか。僕はUNIXを使い初めて数か月 知りませんでした。僕のまわりでは補完を知らない人が かなりいます。 DOS時代は補完がないのが当り前、と思ってたので、別に面倒だとは 思いませんでした。 > unixの場合は、補完は引数ファイルだけ cshだと確かにそうですね。tcshは(多分bashも)コマンド/引数共に補完できます。 あと、completeという内部コマンドを使うと、どのコマンドが どういう引数を要求するのか、という情報を与えることができます。 例えば、cat (Ctrl-D)とすると ファイル/ディレクトリ名の一覧出てきますが、 man (Ctrl-D)ならマニュアルの一覧が出てくると便利ですよね。さらに man 3 (Ctrl-D) … マニュアルのセクション3 telnet (Ctrl-D) … ホスト名 rmdir (Ctrl-D) … ディレクトリ名 printenv (Ctrl-D) … 環境変数 gcc -f(Ctrl-D) … -fで始まる長い長いオプション名 と、状況に応じて補完対象を変えてほしいわけで。 というわけで、例えばこんな感じにするわけです。 http://X68000.startshop.co.jp/~68user/tmp/.completerc で、bashでは、tcshのcompleteに相当する機能はないのかなと思ってるんですが、 どなたかご存知ですか? > " 10 22 110 20 30 200 5 25 300" bcにこだわる理由がなければ、perlやawkを使った方がいいかもしれませんね。 #!/usr/local/bin/perl $raw = 3; # 一行あたりの項目数 $raw_num = shift || die; # 平均を得たい項目(1列目なら0) $sum = 0; @nums = split(/ /,<STDIN>); $i = 0; while ( defined $nums[$i*$raw+$raw_num] ){ $sum += $nums[$i*$raw+$raw_num]; $i++; } print "$raw_num列目の合計は $sumです。\n"; 実行例。 % echo '10 22 110 20 30 200 5 25 300' | ./b 1 1列目の合計は 77です。 bcでできるかどうかマニュアルを読んでみたのですが、よくわかりませんでした。 ところでbcで割り算の結果を小数点の精度で得る方法をご存知ですか? 3/4 も 3.0/4.0 も 3.1/4.1 も結果が0になるんですが…。 |
|
> ところでbcで割り算の結果を小数点の精度で得る方法をご存知ですか? man読んでたら書いてありました。scale=3などとして、有効桁数を 指定すればいいんですね。デフォルトはscale=0だから、小数点以下は 表示されない、と。 あと、ご存知かもしれませんが、bc(GNU bc)の日本語マニュアルは http://www.jp.freebsd.org/man-jp/search.html で見られます。 |