• 締切済み

cshでmakeのようなファイルの時間を見るコマンド

makeでは2つのファイルのタイムスタンプを比較して更新 されていたらコマンドを実行する 機能がありますが、こ のことをcshスクリプトで実行しようとした場合、何か良い 方法は有りませんでしょうか? 素直にmakeを使用すればよいのですが、既に環境がshell スクリプトベースで構築されてしまっており、 出来ればこれと親和性の良い方法で、多少場当たり的なのは認識しつつも、逃げたく思っています。 より具体的には2つのディレクトリ(CENTER directoryとwork directory)があり、ワークは各々が各人の都合でソースコードを変更します。 ある時点でCENTERディレクトリが更新された場合、その更新されたファイルだけをセンターディレクトリからワークディレクトリへコピーしてくる という事をしたいと思って います。 以上、よろしくお願い致します。

みんなの回答

  • k-841
  • ベストアンサー率27% (129/465)
回答No.2

test コマンドは、真か偽かを返り値で返します。返り値は$?に格納されますが、条件式では直接利用できます。 たとえば file1 と file2 でどちらが新しいかを出力するようなスクリプトは以下のようになります。 #/bin/csh if `[ file1 -nt file2 ]` then echo file1 else echo file2 endif cshでスクリプトを書いた経験があまりないので自信ありませんが、一応これで動きます。これの応用で所望の動作ができませんか?

tk_1980024
質問者

補足

アドバイス有難うございます。試したのですがどうやらcshではこれではうまく行かない様子です。manでも調べたのですがtestコマンド([])において "-nt"をサポートしているのはkshの組み込みコマンドの場合に限られ、/usr/bin/test では使用できない様なのです。 別の方法としては tcshの組み込みコマンド filetest -Mを使用する というのが簡単そうであると分かりました。 如何でしょうか?

  • k-841
  • ベストアンサー率27% (129/465)
回答No.1

ファイルの更新時刻比較だけなら、[ file1 -nt file2 ] で可能です。man test で調べてみてください。 でも、cvs に移行できるならそちらの方がメリットが多そうな状況に見えます。

tk_1980024
質問者

補足

アドバイス有難うございます。 このコマンドはコマンドラインから打てばよいのでしょうか? それとも test file1 -nt file2 なのでしょうか?? 色々試したのですが実行できなかったのでもう一回教えて下さい。 宜しくお願いいたします。

関連するQ&A