68user's page 掲示板

Prev< No. 3076〜3102> Next  [最新発言に戻る] [過去ログ一覧]
No. 3076 # 山田 2003/01/28 (火) 14:57:01
>>3067 68user
私もcompress→uncompressと試してみました。
解凍後のファイルサイズも一致しており、上手くいっているようです。
とても助かりました。ありがとうございます。

実はもうひとつ教えていただきたいことがありまして・・・
cshellで文字列操作は可能なのでしょうか?
下記を解決する方法があれば教えて下さい。
Q1.指定したディレクトリからファイル名を変数に取得。
Q2.上記Q1でAAA_YYYYMMDD.txtと言う名前を取得できたとして、
        YYYYMMDDのみを切り出して、shell内で用意した日付と大小を
        比較出来るのでしょうか?

ご存知の方、教えて下さい(T_T)

No. 3077 # 児嶋 2003/01/28 (火) 15:37:21
>>3074 68user
ありがとうございました。
環境が整ったときにtcshで確認しようと思います。

No. 3078 # koko 2003/01/28 (火) 17:02:53
親プロセスで子プロセスをforkするC言語プログラムがあります。
子プロセスは複数作成され、処理が終わると自動的に消滅します。
親プロセスで現在存在している子プロセスの数を把握したいのですが、簡単な方法はありますでしょうか。
子プロセスの数だけ分かれば良いです。
子プロセス数カウンタを設け、forkでインクリメントし、子プロセスの終了を検知してデクリメントする方法もあるかと思いますが、もっと簡単な方法があれば教えていただけますでしょうか。
よろしくお願いします。

No. 3079 # 68user 2003/01/29 (水) 02:28:50
>>3075 美春
考え方を変えて、日本語以外を除くとするなら
    % sed 's/[a-zA-Z0-9]//g' < file
など。本当に日本語だけを拾いたいなら
    http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
を参考に perl でやるのがよいでしょう。

>>3076 山田
> cshellで文字列操作は可能なのでしょうか?
foreach file (AAA_*.txt)
    set date=`echo $file | sed 's/^AAA_\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\).*/\1/'`
    echo '$file -> $date'
    if ( $date < '20020114' ) then
          echo $date
    endif
end

仕事や課題を丸投げされると答える側もつまらないです。質問するなら
もっとおもしろい質問をしてください。

お金を払っていただけるなら、(お仕事として) つまらん質問にも
答えますけど。

>>3078 koko
> 親プロセスで現在存在している子プロセスの数を把握
> したいのですが、簡単な方法はありますでしょうか。
簡単、というか適当な調べ方でよいなら、ps して、親プロセスが
自分であるプロセス一覧を取得、などがあると思いますが、
ps しているプロセスは除くとか余計な処理をしなきゃいけない
と思うので、結果的にはあまり簡単じゃないと思います。

    - 親がいろんな仕事をするのなら、fork するときに
        インクリメントして、SIGCHLD を受けるたびに
        デクリメント (>>2988 を参照)
    - 親は子の終了を待つだけなら、fork するときに
        インクリメントして、wait して、wait から戻って
        きたらデクリメント。

でいいんじゃないでしょうか。

No. 3080 # koko 2003/01/29 (水) 09:47:13
>>3079 68user
やはり、ご指摘の方法が妥当なところのようですね。
この方法で対応する事とします。
ありがとう御座いました。

No. 3081 # 山田 2003/01/29 (水) 09:59:35
>>3076 山田
ご回答ありがとうございます。
>仕事や課題を丸投げされると答える側もつまらないです。質問するなら
>もっとおもしろい質問をしてください。
了解しました。
先日、ほぼ一日調査してたのですが出来なかったもので。。。
申し訳ないです。。

No. 3082 # 美春 2003/01/29 (水) 11:49:51
>>3067 68user
うまくいきました。
本当にありがとうございました。
perlの方も挑戦してみます。
度々の質問で申し訳ありませんが、
grepの正規表現で"'"(シングルクォーテーション)
を出さないようにしたいのですが、
うまくいきません。
grep '[\']' <file>
だとダメみたいです。
どうすればよいのでしょうか?
初心者の質問ですみません。
よろしくお願いします。

No. 3083 # has 2003/01/30 (木) 00:01:24
>>3082 美春
grepは行単位で処理するので、シングルクォートを含む行を表示しない、
という処理は可能です。grepに-vをつけると、条件に合わない行のみを
出力するので、

% grep -v "'" filename

とすればfilenameファイル内のシングルクォートを含まない行のみを
出力してくれます。

もしシングルクォートを文字単位で削除したいのであれば、

% sed -e "s/'//g" < filename

とすればよいと思います。

No. 3084 # 美春 2003/01/31 (金) 14:06:07
No. 3083 has
感動してしまいました。
manで調べろと怒られるかと
思ったのにご丁寧に
ありがとうございました。

No. 3085 # 山田 2003/02/05 (水) 16:11:14
こんにちは、山田です。
shellにワイルドカードを含んだ引数を文字列として渡したいのですが上手くいきません。
例えば、
aaa.sh zz*.txt

aaa.sh zz\*.txt
と渡すとローカルにある対象となるtxtファイルを全て引数としてもってきてしまいます。
aaa.sh zz'\''*'.txt
などとしてもダメなようです。
出来ないのでしょうか?
申しわけありませんが、教えて下さい。

No. 3086 # ふくし 2003/02/05 (水) 16:19:59
>>3085 山田
さん、

シェルはなんでしょうか?
zsh だと

    > echo *.txt
    aaa.txt bbb.txt ccc.txt

    > echo '*.txt'
    *.txt

のようになりました。

No. 3087 # 山田 2003/02/05 (水) 18:33:15
>>3086 ふくし
様、ご回答ありがとうございます。
cshです。
やりたいことは、
aaa.sh ZZ*.txt
と指定した時にshell内で、
set filename = arg[1]とし、
filenameに"ZZ*.txt"という文字列をセットしたいのです。

No. 3088 # ふくし 2003/02/05 (水) 20:05:51
>>3087 山田
さん

下で書いたつもりだったんですが (^^;;;
引数「ZZ*.txt」全体をシングルクォート '' で囲んだらどうなります?

No. 3089 # 山田 2003/02/05 (水) 21:20:34
>>3086 ふくし

>引数「ZZ*.txt」全体をシングルクォート '' で囲んだらどうなります?
やはりカレントの該当するファイルが引数に入ってしまいます。
arg[1]の内容が"ZZa.txt ZZb.txt ZZc.txt"というような感じです。
んー、こまっております(^^;)

No. 3090 # 68user 2003/02/05 (水) 21:48:17
>>3089 山田
    % cat hoge
    set filename='*.c'
    echo $filename

    % csh -fx hoge
    set filename=*.c
    echo *.c
    a.c b.c c.c d.c

というわけで、csh では ただの文字列として set しても、
glob 展開されます。よって、参照するたびに
    echo "$filename"
とダブルクォートで囲むか (面倒)、あるいは
    set noglob
で変数を展開しないようにする、と。

もっとよいのは perl や ruby などに乗り換えることです。

No. 3091 # ふくし 2003/02/06 (木) 02:29:54
>>3089 山田
さん、

知らぬこととはいえ失礼しました。
そんな致命的な非互換があろうとは、、。

シュバング行で
  #! /bin/sh
と書いてしまって、Bourne Shell で書き直すってのは
どうでしょうね。
コマンドを手入力するのは csh 系が、
シェルスクリプトを組むのは Bsh 系がいいって聞いた気がします。
(気のせいか? ;;;
もっぱら私はちょっとでも論理のあることは
Perl にするのでどっちも知りませんが、、。

No. 3092 # op 2003/02/07 (金) 00:33:46
始めましてopといいます。
・・・いきなり質問で申し訳ないのですが、

掲示板を作っていて
コメントを書き込んだ後に更新をすると、
前のコメントが追加されてしまいます
これを回避する為にはいったいどんなコードに
書けがよいのでしょうか?

宜しければアドバイスの程お願いします。

No. 3093 # DQN..cc [URL] 2003/02/07 (金) 00:48:48
>>3092 op
書き込み後に↓こんなHTMLを表示すればいいのでは。

<html><head><title>書きこみました。</title><meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"><meta content=5 http-equiv=refresh></head><body>書きこみが終わりました。<br><br>画面を切り替えるまでしばらくお待ち下さい。<br><br></body></html>

別のページに移動させたければ、
<meta content=5 http-equiv=refresh>
ではなく、
<meta content=5;URL=../homepage/index.html http-equiv=refresh>
としてみる。

・・・といった方法ではどうでしょう。

No. 3094 # しん 2003/02/07 (金) 13:59:17
以前にBASIC認証の質問のご回答を頂きありがとうございました。
おかげさまで認証を行うサイトへのアクセスが出来るようになりました。
現在はPOSTが行えるクライアントを作成中です。

POST及びchunkedに関する質問ですが、
あるサイトにアクセスした際に

Content-type: text/x-hdml; Charset=Shift_JIS
Transfer-Encoding: chunked
省略
postmethod="post" postdata="xxxxxxx"
省略

とのレスポンスがあり

print SOCKET "POST /$path HTTP/1.1\r\n";
print SOCKET "Host: $host\r\n";
print SOCKET "User-Agent等リクエストヘッダ"

$message = "xxxxxxx";
$len = length($message);
print SOCKET "Content-length: $len"."\r\n\r\n";
print SOCKET "$message";

にてPOSTを行っているのですが、POSTされません。
原因としてはどういった事が考えられますでしょうか。
chunkedでエンコードされ送られたデータはPOSTする際もchunkedで
エンコードして送り返さなければいけないのでしょうか。
もしエンコードしたデータをPOSTしなければいけない場合はchunkedの
エンコード方法をお教え下さい。
宜しくお願い致します。

No. 3095 # op 2003/02/07 (金) 20:13:36
>>3093 DQN..cc様
早速のレス有難う御座います♪

なるほど・・・。
確かにこういった処理をする掲示板なんどか見かけた事がありました
本来の意味はこういう事?だったのですね(多分

それと、また質問で恐縮なのですが
リフレッシュ以外にも他の方法なんかありますかね?(^^;

No. 3096 # has 2003/02/08 (土) 01:37:29
>>3095 op
ここの掲示板では書き込みのたびに書き込み内容のMD5を作成し、
キャッシュしておいた最新数件分のMD5と同一の場合には記録しない、
という方式を採用しています。

詳しくはここの掲示板のソースを参照してみてください。

No. 3097 # H-Hash [URL] 2003/02/09 (日) 01:14:35
>>3094 しん
>chunkedでエンコードされ送られたデータはPOSTする際もchunkedで
>エンコードして送り返さなければいけないのでしょうか。
そんなことは無いです。

>もしエンコードしたデータをPOSTしなければいけない場合はchunkedの
>エンコード方法をお教え下さい。
要するにデータを細切れ(例えば1024byte毎)にして、
サイズ(16進)
データ
サイズ(16進)
データ

0
とすればいいだけです。(see http://www.studyinghttp.net/rfc_ja/2616/sec3.html#sec3.6.1)

で、解決方法ですが、とりあえずHTTP/1.0で送ってみて下さい。
それでも失敗した場合は、とりあえずチャンク周りが原因ではありません。

No. 3098 # op 2003/02/09 (日) 01:44:52
>>3096 has様
MD5ですかぁ〜レベルが一気に上がったような気がしますが、
これからさっそく勉強していきたいと思います(苦笑

ほんとにhasさん、DQN..ccさん有難う御座いました。

No. 3099 # ふくし 2003/02/13 (木) 19:18:56
Linux User という本に5つのディストリビューションが一気に
付録についてるので慌てて買ったんですけど、
よく考えるとコレ(よく考えなくても)CD じゃなくて
DVD なんですよね、、。
会社で遊んでるマシンが1個あって、ただし会社のマシン管理のヒトが
バックアップしてくれないから、バックアップデバイス兼ねて
この機会に DVD-RAM を入れようかなあと思ったんですが、
Linux で読める DVD-RAM ドライブってあるんでしょうかね。
じっさいにはネットワーク経由で Debian(woody)を入れたので、
もう雑誌の付録は必要なくなったんですが、、

No. 3100 # 68user 2003/02/15 (土) 02:44:18
>>3099 ふくし
> Linux で読める DVD-RAM ドライブってあるんでしょうかね。
FreeBSD でも DVD-RAM を読み書きできるくらいですから、
できなくはないでしょうけど、具体的な機種名などは
わかりません。

検索すると DVD-RAM 対応カーネルパッチが云々などと
いうのが引っかかるのですが、Linux 事情に疎いので
それが最新の情報なのか判断できないです。

# てゆーか、DVD-RAM どころか CD-R さえ使ったことが
# ないので。

No. 3101 # bebe 2003/02/17 (月) 11:23:45
findコマンドについて教えてください。
find . -user root とするとカレントディレクトリ以下の
所有者がrootになっているファイルが引っかかるかと思い
ます。
それではなくて、所有者がrootになっていないファイルを
引っ掛けたいと思うのですが、その場合findコマンドはどの
ように使えばいいでしょうか?
宜しくお願いします。

No. 3102 # 68user 2003/02/17 (月) 19:54:30
>>3101 bebe
> 所有者がrootになっていないファイル
    % find . ! -user root
    % find . -false -user root
    % find . -not -user root
などなど。

FreeBSD 4.7-RELEASE のマニュアルには ! と -false と -not が
書いてあるのに
        % find . -not -name \*.c
        find: -not: unknown option
となってしまう。なぜだろう。ソースを見ると -not は効きそうなんだけれども。

http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/find/option.c
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=find&dir=jpman-4.7.0%2Fman

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