Natürlich könnte man argumentieren, dass die Erstellung eines übergeordneten Verzeichnisses die Standardeinstellung sein sollte, und eine Prüfoption könnte verwendet werden, um die Erstellung eines Verzeichnisses zu verhindern, wenn das übergeordnete Verzeichnis nicht vorhanden ist.
Aber der Grund, warum es umgekehrt ist, ist nur Geschichte. Die Basisversion von mkdir hat keine übergeordneten Verzeichnisse erstellt. Aus diesem Grund wurden die X11-Distributionen mit einem Befehl namens mkdirhier geliefert, der diese Aufgabe erfüllen konnte: Überprüfen Sie, ob die übergeordneten Verzeichnisse vorhanden sind, und erstellen Sie sie, falls erforderlich.
Später wurde diese Funktionalität in vielen UNIX-Versionen zum Befehl mkdir hinzugefügt (ich weiß nicht, ob sie heutzutage im POSIX-Standard enthalten ist). Um die Kompatibilität aufrechtzuerhalten, wurde diese Funktion durch Aktivieren eines Optionsflags verfügbar gemacht : -p
.
Warum ist es schlecht, wenn es standardmäßig aktiviert ist? Skripte können davon abhängen, dass mkdir fehlschlägt, wenn das übergeordnete Verzeichnis nicht vorhanden ist. Insbesondere als Benutzer root kann es gefährlich sein, standardmäßig Verzeichnisbäume zu erstellen.
Beispiel:
if mkdir /backup/$(uname -n)/$(date +%Y%m%d)
then
perform_backup ...
In diesem Beispiel wird das Verzeichnis erstellt und die Sicherung auch dann durchgeführt, wenn das Dateisystem /backup
nicht bereitgestellt ist und das übergeordnete Verzeichnis /backup/$(uname -n)
nicht vorhanden ist, wenn die Standardeinstellung umgekehrt wäre.
Faustregel: Es wird empfohlen, das Standardverhalten eines Werkzeugs nicht zu ändern. Geben Sie bei Bedarf Optionen an, mit denen Sie das Standardverhalten ändern können.
alias mkdir="mkdir -p"
.