`touch`の-fオプションの用途は何ですか?

`touch`の-fオプションの用途は何ですか?

からman touch

-f     (ignored)

しかし、それが何を意味するのか理解できません。無視される

私は以下を試しました:

$ ls -l file
-rw-rw-r-- 1 pandya pandya 0 Mar 20 16:17 file

$ touch -f file
$ ls -l file
-rw-rw-r-- 1 pandya pandya 0 Mar 20 16:18 file

そして参考にしてください -f

もしそうなら-f、それが何を意味するのか、どのような役割を果たすのか疑問に思います。

ベストアンサー1

GNUユーティリティの場合、ドキュメント全体はinfo次のページにあります。

-f
無視されます。 「タッチ」のBSDバージョンと互換性があります。

バラより歴史的なBSDタッチマニュアルページ-fどこへ行くか触れる。

その昔のBSDのソースコードを見るとutimes()システムコールがないのでtouch読み取り+書き込みモードでファイルを開き、1バイトを読み取り、逆追跡して書き換えることで、最後のアクセスと最後の修正時間を更新します。

明らかに両方が必要です。読むそして書く権限(touchaccess(W_OK|R_OK)falseを返すと、これを行う必要はありません。)。-fこの問題を解決しよう一時的に権限を0666に変更します。

0666 は、誰もが読み取りおよび書き込み権限を持っていることを意味します。そうでなければ(0600のようなより制限的な権限を使用するように依然として許可されます)触れる)これは、この短期間でファイルへの読み取りまたは書き込みアクセス権を持つプロセスがアクセスできなくなり、破損する可能性があることを意味します。特徴

ただし、これはファイルにアクセスできなかったプロセスがファイルを開くチャンスが短くなり、ファイルを破棄することを意味します。安全

これはあまり賢いことではありません。現代touchの実装ではこれを行いません。その時から、utime()システムコールファイルの内容と混ざらず(非正規ファイルでも機能することを意味する)、変更とアクセス時間を独立して変更できるようにするために導入されており、書き込みアクセスのみが必要です。

このオプションが渡されると、GNUはtouchまだ失敗せずに-fフラグを無視します。これにより、以前のバージョンのBSD用に作成されたスクリプトをGNUシステムに移植する際に失敗しません。最近はあまり関連性がありません。

おすすめ記事