GNU coreutilsのマニュアルページを読むと、マニュアルによると、オプションのrm
1つは次のようになります。-f
-f, --force
ignore nonexistent files and arguments, never prompt
今、いくつかのテストを実行し、次のようなものを使用すると、
rm -f /nonexisting/directory/
文句を言わないでしょう。
そのような選択によって実際に何が得られますか?
また、最も一般的な「ディレクトリの削除」の例rm
は次のとおりです。
rm -rf /delete/this/dir
しかし、この-r
オプションは意味があります-f
。
ベストアンサー1
この場合、マニュアルページにいくつかの詳細がありません。この-f
オプションrm
には実際には多くのユースケースがあります。
- 誤った終了コードの防止
- メッセージが表示されないようにするには
- 権限確認バイパス
あなたは正しいです。存在しないファイルを削除することは意味がありませんが、スクリプトで「このファイルを望んでいません。見つかった場合は削除しますが、気にしないでください」と言うことができます。彼らは存在しません。実際にスクリプトに「存在しない」ことが便利なのでset -e
(スクリプトによって引き起こされる可能性がある追加の破損を防ぐため)、すべてのエラーが発生すると停止し、rm -rf /home/my/garbage
それよりも簡単ですif [[ -f /home/my/garbage ]]; then rm -r /home/my/garbage; fi
。
権限の確認に関する注意:ファイルを削除するには、そのファイルに対する書き込み権限が必要です。親ファイル自体ではなくディレクトリです。したがって、root
ホームディレクトリにアクセスできないファイルがあると仮定すると、sudo
このオプションを使用してそのファイルを削除できます-f
。 Gitを使用すると、Gitが作成したオブジェクトファイルに対する書き込み権限を保持しないことがわかります。
-r--r--r-- 1 phunehehe phunehehe 62 Aug 31 15:08 testdir/.git/objects/7e/70e8a2a874283163c63d61900b8ba173e5a83c
したがって、rm
使用せずにGitリポジトリを削除する唯一の方法root
はrm -rf
。