`cp`と`rm`がディレクトリを別々に扱うのはなぜですか?

`cp`と`rm`がディレクトリを別々に扱うのはなぜですか?

ツールがディレクトリを通常のファイルとは別に扱うcpのはなぜですか?rmどちらも、ユーザーが再帰的な動作を望んでいることを明示的に指定する必要があります。それ以外の場合、ディレクトリはまったく処理されません。

コンピュータとの最初の対話(しばらく前)は、Windows/GUI/クリック/ドラッグアンドドロップ環境で行われました。

この動作は、特にワイルドカードを使用してコマンドを実行するときには残念です。*ディレクトリ( )から以下を除くすべてのエントリを削除するにはどうすればよいですか?空でないサブディレクトリ

私はこれがユーザーが自分の足に銃を撃つのを防ぐ一種のセキュリティ機能であると想像することができますが、これはいくつかのUnixの原則の私の理解と矛盾しています。

  • Unix は通常、ユーザー自身を保護しません。常にユーザーが自分がしていることを知っているとします。
  • Unixでは、すべてがファイルです。ディレクトリは別のファイルではありませんか?なぜ彼らは異なって扱われますか?

私の質問:

  • この動作は技術的な制限によって引き起こされますか、それとも意図的な選択ですか?

後者なら、

  • この選択を促した歴史的記録はありますか?

ベストアンサー1

ドロバートunix mvプログラムはディレクトリに-R(再帰)オプションを必要としませんが、cpに必要な理由は何ですか?基本的にあなたの質問に答えます。通常のファイルをコピーまたは削除することは、ディレクトリで同じ操作を実行するのとは異なります。ディレクトリを使用すると、その中に含まれるすべてのファイルを処理する必要があるからです。したがって、操作は基本的に異なります。

rmdir空のディレクトリでのみ機能する特別なユーティリティがあることにも注目する価値があります。事実を確認しないと、最初はディレクトリではなくディレクトリのみを削除でき、空のディレクトリを使用して繰り返しrm作業し、rmそのディレクトリを削除して完全な削除をrmdir実行する必要があると結論付けることができます。

おすすめ記事