空のフォルダを表すためにrmに-rが必要なのはなぜですか?

空のフォルダを表すためにrmに-rが必要なのはなぜですか?

何か私を悩ませています:

touch a
rm a

わかりました、期待通りに動作します。

mkdir a
rm a

動作するには-rが必要ですが、再帰が何であるかを理解できませんか?フォルダが空の場合、再帰操作は実行されません。私はrm aがaを削除しようとし、空でなければ失敗し、rm -rがaの内容を繰り返すことを望みます。

なぜこれが起こるのですか?

編集:この質問はまったく関係のない質問の重複としてマークされています。私の質問は次のようにまとめることができます。非再帰操作を実行するにはなぜ再帰フラグが必要なのですか? mkdir a, rm -ra には再帰はありません。これは他の質問とは関係がないので、rmは基本的に再帰的ではありません。

ベストアンサー1

rmディレクトリを削除する意図がまったくないからです。

最初はrmサポートされていません-r。ユーザーには、ディレクトリ内のすべてのファイルを削除してrmから(現在空の)ディレクトリを削除する1つのオプションしかありません。rmdir

明らかにこれはうまくいきます非常に迷惑な-rこの問題を解決するために実装されました。

ただし、rm /some/empty/dir動作を開始すると、以前のバージョンと互換性がなくなります(したがって、rm /some/empty/dirエラーが発生すると古いコードが壊れる可能性があります)。この動作は-r定義されていないため問題ありません(-rオプションがまだ存在していないため)。

おすすめ記事