何か私を悩ませています:
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
オプションがまだ存在していないため)。