touch -a
そこで、と をtouch -m
使用すると、ファイルへのアクセス時間と変更時間をそれぞれ変更できることを学びました。
しかし、なぜ?
Wikipedia によれば:
「更新されたアクセス日付または変更日付は、バックアップ ユーティリティや make コマンドライン インターフェイス プログラミング ユーティリティなど、さまざまな他のプログラムにとって重要になる場合があります。」
しかし、まだ理解できません。
誰か、現実のシナリオを 1 つまたは 2 つ知っていますか? また、このコマンドは誤用される可能性がありますか?
答え1
ウィキペディアの例の 1 つでは、make コマンドで便利であると述べられています。Make は、任意のソース コードのビルド スクリプトを含む Makefile を実行するために使用されるプログラムであり、コマンドを実行すると、現在の Makefile の変更時刻がディレクトリ内に保存されます。
ここで、何らかの理由でソースを再構築したいとします。make を再度実行すると、すでに実行されているため何もする必要がないことが通知されます。そのため、をtouch -m "source.file"
実行してファイルの変更をシミュレートできます。make を 3 回目に実行すると、変更が認識され、ソース コードが再構築されます。
もう 1 つの例は、バックアップを強制することです。たとえば、ファイルがいつ変更されたかに基づいてファイルをバックアップするバックアップ ユーティリティを実行している場合、変更時刻を変更することで、プログラムにファイルを強制的にバックアップ (またはバックアップから除外) させることができます。
ファイルの古さについて誤った印象を与える
たとえば、バックアップ スキームで使用する場合です。バックアップが同一であるため、または変更がリモート ホストへの低速回線でバックアップを更新するコストに比べて重要でないため、新しいバックアップでバックアップを更新したくない場合があります。これを実現するには、バックアップ ファイルに新しいタイムスタンプをマークするという単純なオプションがあります。これは、そのファイルの有効タイムスタンプが現在異なるものであることを偽装するのではなく宣言するものです。
ファイルの古さについての印象は確かに誤りですが、その意味は現実的かつ正当です。
- 回答者これさらに多くの例を見つけることができる質問