mkdirに入れ子になったディレクトリの作成を許可するようにデフォルトで-pフラグが設定されていないのはなぜですか?

mkdirに入れ子になったディレクトリの作成を許可するようにデフォルトで-pフラグが設定されていないのはなぜですか?

-pフラグがデフォルトで設定されてはならない理由はありません。mkdir

  -p, --parents     no error if existing, make parent directories as needed

私が知る限り、これは非破壊的な命令です。これがどのように機能するかについて重要なことを見逃しましたか?

第二に、これを基本的な動作にする簡単な方法はありますかmkdir

ベストアンサー1

もちろん、親ディレクトリの作成はデフォルトでなければならず、親ディレクトリが存在しない場合はディレクトリの作成を防ぐために使用できるいくつかの確認オプションがあると主張することもできます。

しかし、その反対が起こる理由は歴史だけです。基本バージョンは目次親ディレクトリは作成されません。これがX11ディストリビューションに次のソフトウェアが付属している理由です。mkedielこれを行うことができます。親ディレクトリがあることを確認し、必要に応じて作成します。

後でこの機能がコマンドに追加されました。目次多くのUNIXバージョンでは(現在POSIX規格にあるかどうかはわかりません)。互換性を維持するために、この機能はオプションフラグをオンにすることによって提供されます-p

基本的にオンになっているのはなぜ悪いのですか?スクリプトは次のように変更できます。目次親ディレクトリがないと失敗します。特にユーザーとしてデフォルトでは、ディレクトリツリーを作成するのは危険です。

例:

 if mkdir /backup/$(uname -n)/$(date +%Y%m%d)
  then
    perform_backup ...

/backupこの例では、/backup/$(uname -n)ファイルシステムがマウントされておらず、親ディレクトリが存在しない場合でも(デフォルトがそうでない場合)、ディレクトリが作成され、バックアップが実行されます。

経験則:ツールのデフォルトの動作を変更しないことをお勧めします。必要に応じてデフォルトの動作を変更するオプションを提供します。

おすすめ記事