Akihiro MOTOKI
amoto****@gmail*****
2010年 12月 2日 (木) 00:08:49 JST
元木です。こんばんは。 お疲れ様です。 At Tue, 30 Nov 2010 19:01:47 +0900 (JST), 長南洋一 <cyoic****@maple*****> wrote: > > 長南です。 > > -daystart, -amin, -atime, -anewer など時間関係の述語について、 > うまく訳せないところが、三個所あります。 ここでコメントすべきことではないかもしれませんが、 predicate の定番の訳は「述語」なのですが、 個人的にはどうも「述語」という訳に違和感を覚えます。 「演算子」の方がしっくり来るのですが、いかがでしょうか。 こういった用途で「述語」という表現はそれほど一般的ではないと思います。 find くらい大きな manpage になると、man find を実行して、 検索するのがよくある使い方と思いますが、そうすると、 いきなり「述語」が出て来ると、いったい何? ということになるのを 懸念しています。 なぜ、著者は operator ではなく predicate を使っているのかが 少し気になりますが。 では、本題に移ります。 (といいつつ -atime などの残りの部分についてですが) # 本題の -daystart はもう少し考えてからお返事します。 > -atime, -ctime, -mtime と言えば、以下の部分の訳にも頭を悩まして > います。 > > .\"O .IP "\-atime \fIn\fR" > .\"O File was last accessed \fIn\fR*24 hours ago. > .\"O When find figures out how many 24-hour periods ago the file > .\"O was last accessed, any fractional part is ignored, so to match > .\"O .B \-atime > .\"O .BR +1 , > .\"O a file has to have been accessed at least > .\"O .I two > .\"O days ago. > .\"O > .IP "\-atime \fIn\fR" > ファイルの最終アクセス日時が \fIn\fR*24 時間前の時間帯に当たれば > (訳注: すなわち、\fB\-daystart\fR オプションを指定していない場合、 > 今現在の時刻から計算して n 日前ならば)、真を返す。 > \fBfind\fR は、ファイルが最後にアクセスされたのが 24 時間周期で > 何周期前かを計算するとき、小数点以下の部分を切り捨てる。 > 従って、 > .B \-atime +1 > にマッチするためには、 > ファイルは少なくとも二日前にアクセスされていなければならない。 > > 「File was last accessed n*24 hours ago.」をどう訳したら、 > よいでしょうか。厳密に言うと、n*24 時間前から、(n+1)*24 時間前の > 間でしょう。それで上のようなくどい訳をしました。もっとすっきり > した表現はないでしょうか。 > > 「24 時間周期で何周期前かを計算するとき」は「何日前かを計算する > とき」で充分かも。でも、24 を残しておきたい気もします。 > 「何日前かを計算するとき、24 で割って出た小数点以下の部分は > 切り捨てる」ぐらいでしょうか。あるいは、「何日前かを、24 で > 割って計算するとき、小数点以下の部分を切り捨てる」。 難しいですね。個人的には、「N 日前に」という言い方の方が、 「n*24時間前の時間帯」よりも、時間としての区間を感じやすく、 理解しやすいように思います。 著者は、n 日が現在時刻から計算されることを意識して、 n days ではなく n*24 hours という書き方をしていると推察しますが、 それに引きずられて読みにくくなっては本末転倒なので、 訳注として、「n 日前」は「n*24 時間前から (n+1)*24 時間前まで」 であることを記載しておくのはいかがでしょうか これを考慮して、思いきり意訳してみるとこんな感じでしょうか。 ファイルの最終アクセス日時が n 日前の場合に、真を返す。 (訳注: n 日前は n*24 時間前から (n+1)*24 時間前まで 何日前かを求める際に、1 日に満たない小数点以下の部分は切り捨てられる。 したがって、 -atime +1 にマッチするためには、少なくとも 二日前にアクセスされていなければならない。 -atime などは、何度か find の manpage の原文を読んだことがありますが、 自分の頭の中では上の文章のように理解しており、他の人に説明した際にも manpage の説明よりよく分かったと言われたことがあります。 > .\"O .IP "\-anewer \fIfile\fR" > .\"O File was last accessed more recently than \fIfile\fR was modified. If > .\"O \fIfile\fR is a symbolic link and the > .\"O .B \-H > .\"O option or the > .\"O .B \-L > .\"O option is in effect, the access time of the file it points to is > .\"O always used. > .\"O > .IP "\-anewer \fIfile\fR" > ファイルの最終アクセス日時が、\fIfile\fR の内容更新日時よりも > 新しければ、真を返す。検査の対象となるファイルがシンボリックリンクで、 > しかも > .B \-H > や > .B \-L > オプションによってリンクがたどられるようになっている場合は、 > リンク先のファイルのアクセス日時が、常に使用される。 > > -cnewer や -newer の同様部分についても言えることなのですが、 > このくだりは、原文の著者がちょっと混乱しているような気がします。 > > 「 If \fIfile\fR is a symbolic link」の 「file」は \fI..\fR で > 囲まれていますから、直前の文の \fIfile\fR と同じ、すなわち > -anewer の引数だと考えるのが、自然だと思います。そうだとしたら、 > 「-anewer の引数がシンボリックリンクで、しかも -H や -L オプションが > 有効なときは、リンク先のファイルの内容更新日時 (mtime) が比較に > 使用される」というのが、著者の言おうとしたことなのではないでしょうか。 その通りだと思います。Ubuntu 10.10 で実際の動作を確認してみましたが、 リンク先のファイルの mtime を参照して動作していることを確認できました。 > わたしとしては、「the access time of the file it points to is > always used」をそのままにしておくために、 「If \fIfile\fR is > a symbolic link」の file を無理かもしれませんが「検査の対象になる > ファイル」と訳しておきました。 > > でも、これでは、-L オプションはとにかく、-H オプションを > 引き合いに出したことが、ちょっとおかしくなります。なぜなら、 > -H オプションはコマンドラインで指定したファイルにしか影響しない > わけで、検査対象になるファイルについて -H オプションの有効・ > 無効を言うことはあまり意味がありませんから。もちろん、 > 検査対象のファイルがコマンドラインで指定されていることも > ありえますけれど。 > > そんなわけで、思い切って、 > > ... \fIfile\fR がシンボリックリンクで、 > しかも > .B \-H > や > .B \-L > オプションによってリンクがたどられるようになっている場合は、 > リンク先のファイルの内容更新日時が、常に使用される。 > > と書き変えてしまおうかと思っていますが、どんなものでしょう。 > > 現在の訳でも一応は意味が通りますから、このままでよいのかも > しれません。もしかすると、それがまさに著者の言いたいことで > あって、混乱しているのはわたしの方かもしれませんし。 私は長南さんの新しい案の方に、賛成です。 正確を期すなら、「リンク」→「シンボリックリンク」でしょうか。 元の訳の場合、少なくとも、「検査の対象となるファイル」というと、 find で走査されるファイルの方も、検索対象のファイルなので、 何を指しているか分からなくなる懸念があると思います。 新しい訳の方が誤解も招かないので、よいと感じました。 -- Akihiro MOTOKI (amoto****@dd***** / amoto****@gmail*****)