|
>>3656 すすむ tar -xvf /dev/rmt/1m ./bkup/200309*data.tar.gz ではどうでしょうか? |
|
>>3657 バンガード >tar -xvf /dev/rmt/1m ./bkup/200309*data.tar.gz 上手くいきません。 |
|
>>3652 zsh > /usr/bin配下のawkでは環境変数を参照できなかったと思います。 ご指摘ありがとうございます。まわりに Solaris 環境がなくなってしまった ため誤ったことを書くことが増えると思いますが、そのときはご指導願います。 >>3653 m16 % echo abc | /usr/bin/nawk '{ print ENVIRON["HOGE"] }' や % printenv HOGE で何も出力されないなら、環境変数の設定ミスでしょう。 >>3655 すすむ > UNIXのtarコマンドについて教えて下さい。 > DATテープから任意のファイルをワイルドカード(*)で取り出したいの > ですが上手くいきません。 HP-UX 11i で試した限りでは、HP の tar ではワイルドカードは使用 できないようです。 - 全部 tar xf で展開し、狙いのファイルを拾う - tar tf の結果を grep で拾って tar xf で完全なファイル名を指定する - GNU tar をインストールする などの方法を検討するのがよいかと思われます。 >>3657 バンガード > tar -xvf /dev/rmt/1m ./bkup/200309*data.tar.gz sh 系・csh 系いずれも、カレントディレクトリに bkup というディレクトリが 存在し、その下に 200309*data.tar.gz にマッチするファイルが存在した場合、 存在するファイル名に展開されてしまい、結果として意図とは異なるファイルが 展開されます。 また、sh 系ではマッチしなかった場合 ./bkup/200309*data.tar.gz がそのまま tar に渡りますが、csh 系ではシェルの glob 展開の時点でエラーになります。 メタキャラクタは必ずエスケープしましょう。 |
|
>>3658 すすむ 当方はAIX 5.2上で試しましたが、以下の様な結果になります。 (tar でなくて申し訳ありません) % ls -l ./test_dir 合計 7 -rw-r--r-- 1 furu man 0 Mar 25 13:01 20030901data -rw-r--r-- 1 furu man 0 Mar 25 13:01 20030902data -rw-r--r-- 1 furu man 0 Mar 25 13:01 20030903data -rw-r--r-- 1 furu man 0 Mar 25 13:02 20031201data -rw-r--r-- 1 furu man 0 Mar 25 13:02 20031202data -rw-r--r-- 1 furu man 0 Mar 25 13:02 20031203data -rw-r--r-- 1 furu man 0 Mar 25 13:02 20040101data -rw-r--r-- 1 furu man 0 Mar 25 13:02 20040102data -rw-r--r-- 1 furu man 0 Mar 25 13:02 20040103data -rw-r--r-- 1 furu man 4 Mar 22 15:59 test1 -rw-r--r-- 1 furu man 8 Mar 22 16:00 test2 -rw-r--r-- 1 furu man 8 Mar 22 16:00 test3 -rw-r--r-- 1 furu man 12 Mar 22 16:01 test4 -rw-r--r-- 1 furu man 12 Mar 22 16:01 test5 -rw-r--r-- 1 furu man 4 Mar 22 16:01 test6 -rw-r--r-- 1 furu man 20 Mar 22 16:02 test7 % wc ./test_dir/200309*data 0 0 0 ./test_dir/20030901data 0 0 0 ./test_dir/20030902data 0 0 0 ./test_dir/20030903data 0 0 0 合計 念のため、csh と ksh で試しましたが、結果は同じです。 |
|
>>3660 バンガード 根本的に誤解があるようです。 > % wc ./test_dir/200309*data この場合、操作対象ファイルは既に存在するのでエスケープは不要です。 この例ではシェルがメタキャラクタを展開し、wc は ./test_dir/20030901data ./test_dir/20030902data ./test_dir/20030903data というような引数を得ます。 しかし > # tar -xvf /dev/rmt/1m 200309\*data.tar.gz の場合は、今から展開しようとしているわけなので、ファイルはまだ 存在しません (仮に存在していたとしても、存在するファイルにマッチ してもらっては困るわけです)。 よって、シェルが展開しないように \* などとエスケープします。 すると tar は -xvf /dev/rmt/1m 200309*data.tar.gz というふうにメタキャラクタをそのまま受け取るので、それを /dev/rmt/1m 内のデータと比較し、マッチするファイルのみを抽出します。ただし 今回のように tar が自前でメタキャラクタを展開する機能を持っていない とうまくいきません。 用語集: ファイルグロブ http://x68000.startshop.co.jp/~68user/unix/pickup?%A5%D5%A5%A1%A5%A4%A5%EB%A5%B0%A5%ED%A5%D6 の一読をお勧めします。 |
|
>>3661 68user まず最初にお断りさせていただきたいのですが、私が3660の投稿を行ったタイミングでは まだ3659の発言はありませんでした。 ですので、3660投稿の時点では3659の発言は読んでいませんでした。 ただ、どちらにしても私のテスト自体に思い違いがあった様で御指摘は大変参考になり ました。 御指摘誠にありがとうございました。 この投稿を送信次第御提示いただいた資料を参照してみます。 |