rmが基本的に再帰的に機能しないのはなぜですか?

rmが基本的に再帰的に機能しないのはなぜですか?

私はrmコマンドがパスがファイルなのかフォルダなのかを自動的に確認せず、必要に応じて基本的に再帰的に削除しない理由を見つけようと友達と話し合っていました。かなり一般的な操作では、「-r」は必要ありません。これにエイリアスを設定できることを知っています。しかし、私が本当に欲しいのはその理由を知っていることです(妥当な理由があると思いますが、それを知りません)。

答え1

本当の理由は作家に尋ねなければならない。私が言うことができるのは、これがとても良い習慣だということです。

~から鉄道空気ブレーキに関するウィキペディア記事:

ウェスティングハウスのシステムは空気圧を利用して各車両のガスタンク(空気タンク)を膨張させる。空気圧がいっぱいになると、各車両にブレーキを解除するように指示されます。空気圧の低下または損失は、各車両にタンク内の圧縮空気を使用してブレーキするように指示する。

これは、基本状態がブレーキがかかっていることを意味します。あなたはそれを解放し、電車を潜在的に危険な状態にするように努力しなければなりません。

もちろん、rm最初になぜ2つのモード(再帰と非再帰)があるのか​​については説明しません。たぶんそれはあなたが要求するものかもしれません。しかし、現実的には、より安全なデフォルト値を設定するのが正しいことです。

答え2

2番目の仮定は、再帰パターンは後で考えなければならないということです。

結局、普通のこともrm安全ではありません。そして必ずしも均一である必要はありませんより安全これは、異なる文書が同じように重要であるか、代替不可能ではないためです。何を削除しますか? Githubで複製されたディレクトリ(フラグ-r/boot/vmlinuz*有無に関係ありません)-r

あなたはrm足に銃を撃った。しかし、rm -r目に見えるすべての足を撃つと、運が良ければ、その足のどれも自分の足ではありません。

そして、rm -rプレーンとはまったく異なる作業を行うには、rmツリーの下のすべてのファイルをリンク解除(2)し、空のディレクトリをrmdir(2)する必要があります。

答え3

Aはfileaとは異なり、a、と同じではありませんdirectoryblock or character device filepipesemaphore

rmファイルの削除(一般ファイル、デバイスファイル、パイプファイルを含む)

rmdirディレクトリを削除します。

rm- ディレクトリはデフォルトでは削除されません。

rmdir- 空でないディレクトリはデフォルトでは削除されません。

rm -d- rmはディレクトリとファイルを許可するようにしましたが、空のディレクトリ(たとえば)のみを削除しますrmdir

rm -r- 再度ツリーの上に移動すると、ツリーの一番下に戻り、ファイルとディレクトリを削除します。ファイルを最初に削除するので、ファイルを削除しようとするとディレクトリが空になります。

rmdir -p a/b/cディレクトリとその親ディレクトリを削除します。ただし、ディレクトリが空の場合にのみ該当します。指定されたディレクトリ構造a / b / c then rmdir -p a/b/candは、空でないディレクトリを削除するrm -r aことを除いて、ほぼ反対のコマンドです。rm -rrmdir

これは私たちに非常に柔軟なシステムを提供します。

自分だけのエイリアスを作るのに邪魔になることはありません。

`AliasZapIt='rm -r $*'

mkdir -p a/b/c ; touch a/b/c/fc1
ZapIt a

a/b/c/fc1 a/b/ca/b と a が削除されます。

関連情報