68user's page 掲示板

Prev< No. 195> Next  [最新発言に戻る] [過去ログ一覧]
No. 195 # 68user 1999/03/18 (木) 21:42
やはりみなさん知ってますか。僕は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になるんですが…。

Prev< No. 195> Next  [最新発言に戻る] [過去ログ一覧]