8

質問

  • Bashのとコマンドrm -dの違いは何ですか?rm -R
  • どちらを使うべきですか?

詳細

rmコマンドのマニュアルページによると:

  • rm -dディレクトリや他の種類のファイルを削除しようとします。
  • rm -R各ファイル引数をルートとするファイル階層を削除しようとします。-Rオプションは、-dオプションを意味します。

今、私はその最後のステートメント(-R意味する-d)を知っています。これは私の質問に答えているように見えるかもしれません。ただし、両方のコマンドフラグが同じであると思われる場合、そもそもなぜ両方のコマンドフラグが存在するのか疑問に思います。

さらに、私はまだBashを学習している途中なので、Bashプログラマーの間で(従来のように)どのオプションが好ましい選択であるか、そしてその理由を知ることは良いことだと思います。

4

4 に答える 4

10

通常、rmディレクトリが空であっても、ディレクトリは削除されません。のように振る舞いrm -dます。空でない場合でもディレクトリの削除を拒否しますが、空の場合は削除します。rmrmdir

rm -Rは完全な再帰的削除であり、ディレクトリとそのすべての内容を削除します。

私は-dそれが存在することを知らなかったので、使用したことはなく、常に使用しますrmdir。ディレクトリが実際には空である場合にのみディレクトリを削除したい場合は、rmdir/を使用します。ディレクトリとそのすべての内容を削除しようとしていることに完全に気付いたときのためにrm -d保存してください。rm -R

于 2012-08-15T20:37:48.973 に答える
3

このオプションは、Macで見つかる可能性が高い-dBSD実装に固有のものです。rmLinuxシステムで見られるGNU実装には存在しません。

推奨される選択肢を探している場合は、-r(小文字で)を使用してツリー全体を削除しrmdir、単一のディレクトリを削除することをお勧めします。これにより、より移植性の高いコードが見つかります。

于 2012-08-15T20:45:08.377 に答える
1

rmはファイルを削除しますが、ディレクトリを削除しようとして問題が発生したため、いくつかのオプションでフラグを立てる必要があります。

rm -fは、確認を求めずにファイルを強制的に削除します

rm -Rはディレクトリを削除しますが、私の場合は確認を求めていましたが、ファイルが非常に多いため、永遠に使用されたyとyを入力し続けました

rm -Rfが私の最終的な解決策でした。確認を求めずに、ディレクトリを強制的に削除しました。

于 2016-08-06T10:29:08.750 に答える
-1

明確にするために、 rm-dは絶対に使用しないでください。「操作は許可されていません」というエラーメッセージが表示されて失敗しただけではないと仮定すると、コンテンツを削除せずにディレクトリが削除されます。空のディレクトリでは、と同じrmdirです。空でないディレクトリでは、ファイルシステムに不整合が生じ、fsckまたは非常に巧妙な手動ハッキングによる修復が必要になります。

これは、存在してはならない愚かなオプションです。彼らがそれを追加したとき、BSDの人々はいくつかの悪い薬を飲んでいました。rm -r少なくとも1973年rmdir以来、そして1971年以来UNIXにいました。

于 2012-08-15T21:05:23.307 に答える