私はこのtouch
コマンドがファイルの最後の変更日を更新するために使用されることを知っています。要求されたファイルがファイルシステムに存在しない場合は、新しいファイルを生成するためにも使用されます。
タッチ(名前が示すように)は最後の変更日のみを更新する必要がありますが、なぜ新しいファイルを生成しようとしますか?
タッチコードにチェックだけ書かれたのか、それともファイルが生成される他の原因があるのでしょうか?
ベストアンサー1
touch
ファイルが存在しない場合、新しい空のファイルが生成されます。ユーティリティには、特にこの状況を処理するためのコードが含まれている必要があります。このユーティリティは次の場所に表示されます。Unix V7;それは手動だから説明:
touch — ファイルが最後に変更された更新日
touch
それぞれに変更された日付を設定してみてください。文書。これは、ファイルから文字を読み書きする方法で行われます。ファイルが存在しない場合-c
このオプションを指定しないと、ファイルを生成しようとします。
touch
(ファイルが空の場合はどうなるかわかりません。低レベルのシステムコール後で来ました。 )
なぜそのファイルが存在したいのかよくわかりませんが、touch
おそらくそうです。make
。ファイルの変更時刻を現在時刻に設定したいのはなぜですか?場合によっては、修正時間を特定の時間に設定すると便利ですが、この機能は後で表示され、元のバージョンではtouch
修正時間を現在の時間にのみ設定できました。その理由は、make
このファイルに依存するルールを再実行するためです。
foo
つまり、ビルドコマンドを宣言するファイルとbar
makefileがあるとしますfoo
。入力すると、make bar
コマンドが実行され生成されます。存在し、より最新の場合、bar
仮定はすでに行われているため、何もしません。ただし、makeより古い場合は、makeは最新ではないと見なして再構築する必要があります。bar
foo
make bar
make
bar
bar
foo
bar
しかし、生成されたルールがbar
変更された場合はどうなりますか?次に、2つのオプションがあります。
rm bar; make bar
touch foo; make bar
foo
作成するには存在する必要がありますbar
。それ以外の場合、通常はコマンドは機能しません。
「タッチ」という用語は、次にも表示されます。make
ユーティリティ:make -t bar
コマンドを実行するふりをするだけです。つまり、bar
生成されるコマンドを実際に実行せずに変更時間を現在の時間に設定します(bar
変更が影響を及ぼすべきではないと思う場合はfoo
これを行うことができますbar
)。したがって、このtouch
ユーティリティはこの機能のスタンドアロンバージョンですmake -t
。