68user's page 掲示板

Prev< No. 2650〜2672> Next  [最新発言に戻る] [過去ログ一覧]
No. 2650 # 68user 2002/04/23 (火) 14:28:07
>>2648 knockout
    nowdate=`date +%y%m%d`
    echo $nowdate
と `` を使います。

パイプを使うこともできなくはありませんが、無駄に長くなります。
複数行を処理する必要がないなら `` でよいでしょう。
    date +%y%m%d | while read line
    do
        echo $line
    done

No. 2651 # knockout 2002/04/23 (火) 14:32:05
出来ました!!
なるほど``ですね。
早速、ホンチャンのプログラムに組み込んできます。
ありがとうございましたm(__)m

No. 2652 # knockout 2002/04/23 (火) 14:54:14
度々すいません。
えっと、さっきの返答してもらった最後の記述
        date +%y%m%d | while read line
        do
                echo $line
        done
は、何を行っているんでしょうか?
僕の解釈ではdateで表示したのを、変数lineに代入、
その後がいまいち理解が、
echo $lineは分かるんですけどね、
doとdoneを使っている意味が
はっきり分からないんです。
それぐらい調べろっていわれそうですが、
どうか一つ宜しくお願いします(^^;

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2653 # H.M [E-mail] 2002/04/23 (火) 17:53:18
はじめまして。LINUXをはじめたばかりのものです。
c言語用FTPクライアントのプログラムを
ダウンロードしたのですが、
実行方法がいまいちわかりません。
他のサイトでサーバ、クライアントのファイルは
それぞれで実行すればよかったのですが、
今回の分はFTPサーバを自分で作らなければ
ダメなのでしょうか?
かなり初歩的な質問だと思いますが
教えてください。

No. 2654 # 田中 [E-mail] 2002/04/23 (火) 20:28:04
リンク先があるかどうか知るにはどうすればいいですか?
具体的には他人に書き込んでもらったアドレスの、
例えばhttp://www.a.com/a/a.gifの絵があるかどうか知りたいのです。
それと、絵の大きさも知りたいです。
それで大きすぎたら表示しないようにしたいのですが。
よろしくお願いします。

No. 2655 # apex 2002/04/24 (水) 12:07:31
はじめまして、apexと申します。
今、Cシェル(OSは、ソラリス8)で、簡単なプロセス管理ツールを作成しています。
この時、以下のことでうまく動作せず悩んでおります。
もし、おわかりになれば教えてください。

1:Cシェル内で、rootユーザになる方法。
            要するに、パスワードをシェル内に記述して、コマンドラインに渡せ  るかどうか?

2:awkにて、プロセスを切り出す方法
            「ps -ef | grep ABC」からABCを認識させ、ABCプロセスが存在しな   ければ、起動する。
                この時、ps-efコマンドを実行した時の、第2パラメータが      ”root”で、第9パラメータが”ABC”であるものを切り出したい。

以上、お手数ですが、よろしくお願いします。

No. 2656 # sys [E-mail] 2002/04/24 (水) 13:40:11
>>2655 apex
1についてですが、
expectというコマンドがあれば、これを使ってみてはどうでしょうか。
ここにサンプルがありますね。
http://www.math.s.kobe-u.ac.jp/~kodama/tips-expect.html

No. 2657 # 68user 2002/04/24 (水) 17:57:37
>>2652 knockout
> doとdoneを使っている意味がはっきり分からないんです。
while 〜 do 〜 done でひとまとまりのループです。なぜループを使うかと
言うと、複数行の出力を1行ずつ取り出して処理しているからです。


>>2653 H.M
> c言語用FTPクライアントのプログラムをダウンロードしたのですが、
> 実行方法がいまいちわかりません。
    http://X68000.startshop.co.jp/~68user/net/c-ftp-1.html
ですか? このページに書いてある通りに実行すれば、引数で指定した
FTP サーバに接続しにいくはずですが…。


>>2654 田中
> 具体的には他人に書き込んでもらったアドレスの、
> 例えばhttp://www.a.com/a/a.gifの絵があるかどうか知りたいのです。
リンクチェッカやダウンローダを使います。

> それと、絵の大きさも知りたいです。
ヘッダを解析します。各種ライブラリやコマンドを使ってもいいです。

> それで大きすぎたら表示しないようにしたいのですが。
if 文で判断します。

# 環境も何もわからないと、この程度のことしか言えません。


>>2655 apex
> パスワードをシェル内に記述して、コマンドラインに渡せるかどうか?
できなくはないです。
>>2573 68user
を参照。

が、コマンドラインからだと (端末を握っている場合、という意味) うまく
いかないので、やめといた方がよいでしょう。sudo や expect を使うのが
一番いいです。

> この時、ps-efコマンドを実行した時の、第2パラメータが”root”で、
> 第9パラメータが”ABC”であるものを切り出したい。
    ps -ef | awk '$2=="root" && $9=="ABC" {print}'
    ps -ef | awk '$2~/^root$/ && $9~/^ABC$/ {print}'
あたりでしょうか。

No. 2658 # 田中 [E-mail] 2002/04/25 (木) 12:35:59
2654番の田中です。
お答え有難うございました。
言葉足らずですいません。
perlでcgiを勉強しながら製作中です。
でもう一度、
リンク先があるかどうか知るにはどうすればいいですか?
具体的には他人に書き込んでもらったアドレスの、
例えばhttp://www.a.com/a/a.gifの絵が存在するかどうか
知りたいのです。
それと、絵の容量も知りたいです。
それで大きすぎたら表示しないようにしたいのですが。
よろしくお願いします。

No. 2659 # 68user 2002/04/25 (木) 23:36:37
>>2658 田中
> リンク先があるかどうか知るにはどうすればいいですか?
wget などのダウンローダやリンクチェッカを使います。現在のサーバに
それらのソフトが入っていなければインストールします。あるいは
libwww などの perl モジュールをインストールするのもよいでしょう。
それもできないなら、
    http://www.studyinghttp.net/Hyd_HTTP.html
がお勧めです。

> それと、絵の容量も知りたいです。
「容量」とはファイルサイズのことですか? 前の質問では「大きさ」と
あったので縦横のサイズかと思ったのですが。

ファイルサイズなら Content-Length ヘッダを見ます。Content-Length
ヘッダが付かない場合もあるので、その際は実際にダウンロードして
そのサイズを調べる)。

縦横のサイズなら、file コマンドや ImageMagick 付属の identify
コマンドを使います。
    % file hoge.jpg
    hoge.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), 72 x 72
    % identify hoge.jpg
    hoge.jpg JPEG 25x40 DirectClass 8-bit 912b 0.0u 0:01

> それで大きすぎたら表示しないようにしたいのですが。
「表示」というのも曖昧です。一度サーバ側にダウンロードしてから
表示させるのか、あるいは <img src="..."> を出力するだけなのか。

どちらにせよ、ファイルサイズなり縦横のサイズなりを if 文で
判断すればよいでしょう。

No. 2660 # 68user 2002/04/26 (金) 00:01:47
>>2658 田中
また無駄な回答をしてしまった。
    http://script.lovely.to/bbs/infolng.cgi?print+200204/02040010.txt
もうこないでね。

No. 2661 # しなくろ 2002/04/28 (日) 01:38:21
大学でUNIXを勉強しているのですが…
ただ教授の命令どおりにコマンドを入力して実行しているだけで、
何をやってて何をするためにUNIXを勉強しているのか分かりません。

大体パソコンをかまうのにも慣れてない自分は、
「この〜〜〜を、〜〜〜して」  ※〜〜〜→聞きなれない英語
といわれ続けちんぷんかんぷんです。

どうしたら上手くUNIXを学べれるのでしょうか?
もしアホでも分かるお勧めの本とかあれば紹介していただきたいのですが…

No. 2662 # 68user 2002/04/28 (日) 12:20:59
>>2661 しなくろ
興味がなければ学ばない。でも単位を落とさないように暗記だけする。
ってのがいいんじゃないでしょうか。興味がわかないことを勉強しても
時間の浪費にしかならないと思います。

興味はあるけどわからないって場合は…どうしたもんでしょうかねぇ。

No. 2663 # ある厨 2002/04/29 (月) 23:15:47
Fixども。
設定完了しましたのでお礼まで。

No. 2664 # なは 2002/04/29 (月) 23:26:36
はじめまして。とても参考になります。

telnetのところでWindowsではtelnetでホームページはみれないのでしょうか?

No. 2665 # 68user 2002/05/02 (木) 00:06:53
>>2664 なは
> telnetのところでWindowsではtelnetでホームページはみれないのでしょうか?

http://x68000.startshop.co.jp/~68user/net/win-telnet.html では
どうでしょうか。

と言っても Windows 2000 の telnet.exe では設定方法が違う
んですけどね。

No. 2666 # a-jmj 2002/05/03 (金) 09:59:32
perlについてですが、無名のハッシュ又は配列のレファレンスに、配列要素を追加する方法を教えてください。ついでに配列の参照の仕方も教えもらえると有りがたいです。

以下のソースは変数を@line_0 .. 9までと変数を9個使っていますが、これを$line_{0} .. {9}と一つの変数にさせたいと思っています。

while (<IN>) {
  local($date) = (split /<>/)[0];
  push (@{'line_'.$date},$_);
}
foreach (0..9) {
  foreach $line (@{'line_'.$_}) {
    print $line;
  }
}

No. 2667 # 68user 2002/05/03 (金) 12:24:15
>>2666 a-jmj
ん〜、$line_{2} で 2 行目のデータが得られればいいのですか?
そのとき得たいデータは日付 ($date) と行全体?

No. 2668 # a-jmj 2002/05/03 (金) 13:20:04
説明不足ですいません。
1<>aaaa<>
1<>bbbb<>
2<>cccc<>
というデータがあったとしたら、
$line_{1}[0] = '1<>aaaa<>'
$line_{1}[1] = '1<>bbbb<>'
$line_{2}[0] = '2<>cccc<>'
といった風にしたいのですが、以下のソースではエラーが出てしまいます。
open(IN,"file");
while (<IN>) {
    local($date) = (split /<>/)[0];
    push (@line_{$date},$_);
}
colse(IN);
これをする目的は下のように全体のデータを何度も回転させたくないので、
データを分別しときたいのです。
open(IN,"file");
@lines = <IN>;
colse(IN);
foreach (0..9) {
  print $_;
  foreach $line (@lines) {
    my($i,$data) = split /<>/,$line;
    print $data if ($i == $_);
  }
}

無名のリファレンスを使いたい理由としては、@{'line_'.$date}といった感じの変数を使いたくないのと、効率を考えたらリファレンスが使えないことです。

No. 2669 # 68user 2002/05/03 (金) 17:19:29
>>2668 a-jmj
こんな感じでしょうか。

    open(IN,"file");
    while (<IN>){
        chomp;
        local($date) = (split /<>/)[0];
        push(@{$line_{$date}}, $_);
    }
    close(IN);
    
    foreach $date (sort keys %line_ ){
        foreach (@{$line_{$date}}){
            print "$_ ";
        }
        print "\n";
    }

実行結果:
    1<>aaaa<> 1<>bbbb<>
    2<>cccc<>

No. 2670 # a-jmj 2002/05/03 (金) 20:44:32
どうもありがとうございます。
ええそうです、求めていたのはこれです。
無名も普通のリファレンスみたいに使うのですね。
なかなかリファレンスを詳しく書いた資料がないものですね。
実際の運用には8桁の日付で、分別させているのですが、以前の方法でしたら、
use strict;を使おうにも変数名が不規則なうえ、指定してやらなければ成らな
い変数が膨大な数になってしまうことが問題でした。
その他に良い分別方法があったら教えていただけたら、幸いです。

No. 2671 # 68user 2002/05/03 (金) 23:30:27
>>2670 a-jmj
> その他に良い分別方法があったら教えていただけたら、幸いです。
データ構造を変えていいなら、各行に一意の番号を付けて
    $data{123}{DATE} = '20020101';
    $data{123}{NAME} = 'hoge';
    $data{123}{MAIL} = 'foo@bar';
などとするのが好みです。

データ構造を現行のままにするなら案の通り
    $data{20020101}[0] = '1<>aaaa<>'
とするのも悪くないでしょう。

あるいは最初に <> を解析しておいて
    $data{20020101}[1]->{NAME}
といった形でアクセスできるようにするという手もあります。以下サンプル。

        my %data;
        open(IN,"file");
        while (<IN>){
                chomp;
                my ($date,$name,$mail,$content) = split /<>/;
                my %hash;
                $hash{NAME}=$name;
                $hash{MAIL}=$mail;
                $hash{CONTENT}=$content;
                push(@{$data{$date}}, \%hash);
        }
        close(IN);

        foreach $date (sort keys %data ){
                print "$date: ";
                foreach my $ref_hash (@{$data{$date}}){
                      print "$ref_hash->{NAME} $ref_hash->{MAIL} $ref_hash->{CONTENT} ";
                }
                print "\n";
        }

        print "おまけ: $data{20020101}[1]->{NAME}\n";


    データファイルの内容:
        20020101<>名前1<>メールアドレス1<>発言内容1
        20020101<>名前2<>メールアドレス2<>発言内容2
        20030203<>名前3<>メールアドレス3<>発言内容3

    実行結果:
        20020101: 名前1 メールアドレス1 発言内容1 名前2 メールアドレス2 発言内容2
        20030203: 名前3 メールアドレス3 発言内容3
        おまけ: 発言内容2


ただし、perl でちょっと凝ったリファレンスを使い出すと、とてつもなく
ソースが汚くなるので、クラスを使いたくなるかもしれません。そして
クラスを使い出すと、perl の OO に嫌気がさして ruby を使い出すかも
しれません。

なので、ほどほどのところでやめておく方がいいのかも。

No. 2672 # Shino [URL] [E-mail] 2002/05/07 (火) 00:59:24
始めまして。C-CGI システム構築をHTMLのタグレベルで実現するツール
の紹介ページが shino.server-club,net/index.htm にあります。皆様の
御参考になればとCMまがいの書き込みを致しました。

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