Führen Sie Mkdir nur aus, wenn das Verzeichnis nicht vorhanden ist
-
Der Befehl
mkdir
und sein Zweck -
Verzeichnisse erstellen mit
mkdir
-
Erstellen Sie Verzeichnisse mit
mkdir
nur, wenn sie nicht existieren -
Verwenden Sie
mkdir
mit einerif
-Kontrollstruktur
Dieser Artikel spricht über mkdir
und seine Verwendung beim Erstellen von Verzeichnissen. Es diskutiert weiter Möglichkeiten, mkdir
zu verwenden, wenn das Verzeichnis, das wir erstellen möchten, nicht existiert.
Der Befehl mkdir
und sein Zweck
Der Befehl mkdir
in Unix/bash steht für make directory. Es ermöglicht Benutzern, Ordner zu erstellen, Berechtigungen festzulegen und vieles mehr.
Der Benutzer, der den Befehl mkdir
ausführt, muss über ausreichende Berechtigungen verfügen, um ein Verzeichnis im angegebenen Pfad zu erstellen, oder der Benutzer erhält möglicherweise die Fehlermeldung Berechtigung verweigert
.
Verzeichnisse erstellen mit mkdir
Die allgemeine Syntax für mkdir
lautet wie folgt:
mkdir <specified_option> directory_name
sudo mkdir <specified_option> directory_name # in case user doesn’t have permissions
mkdir
erlaubt auch die Erstellung mehrerer Verzeichnisse auf einmal. Fügen Sie dazu durch Kommas getrennte Verzeichnisnamen in geschweiften Klammern hinzu.
Stellen Sie sicher, dass Sie keine zusätzlichen Leerzeichen in die Verzeichnisnamen einfügen, da die Verzeichnisse sonst Leerzeichen in ihren Namen enthalten. Der folgende Befehl zeigt, was wir gesagt haben:
mkdir {dir1,dir2,dir3} # here directory names are dir1, dir2 and dir3
Erstellen Sie Verzeichnisse mit mkdir
nur, wenn sie nicht existieren
Ein Problem bei der Verwendung von mkdir
ist ein Fehler, wenn das Verzeichnis, das man zu erstellen versucht, bereits existiert. Es ist kein großes Problem, den Bash-Befehl auszuführen, da mkdir
ein Verzeichnis erstellt, wenn es nicht existiert; Andernfalls wird nur ein entsprechender Fehler ausgegeben.
Es gibt jedoch eine Wendung. Angenommen, Sie versuchen, eine benutzerdefinierte Bash-Shell zu codieren und möchten nicht, dass mkdir
einen Fehler ausgibt, wenn Sie versuchen, eine vorhandene Datei neu zu erstellen. Was machst du dann?
Wir werden verschiedene Möglichkeiten erläutern, um dies zu verhindern.
[[ -d dir_name ]] || mkdir dir_name # option 1
mkdir -p dir_name # option 2
mkdir dir_name 2>/dev/null # option 3
Die erste und die dritte Option werden eher empfohlen als die zweite, da die zweite während der gleichzeitigen Ausführung auf Rennbedingungen stoßen könnte. Der dritte leitet die Ausgabe von stderror
in eine Datei dev/null
um.
Wenn Sie sich mit Betriebssystemen beschäftigt haben, gibt es ein Konzept der ppfdt
-Tabelle (Process File Descriptor Table). Denken Sie daran, dass der Deskriptor null standardmäßig auf stdin
, ein Deskriptor auf stdout
und zwei Deskriptoren auf stderror
zeigen.
/dev/null
ist eine Null-Gerätedatei, die alles verwirft, was in sie geschrieben wurde, und beim Lesen ein Dateiende-Zeichen zurückgibt. Es ist wie ein Vakuum, das alles aufsaugt, was hineingeworfen wird.
Davon abgesehen können Sie hier stderror
auf jede unbenutzte Datei Ihrer Wahl umleiten, aber /dev/null
ist empfehlenswerter.
Verwenden Sie mkdir
mit einer if
-Kontrollstruktur
Eine andere Möglichkeit, dies zu tun, könnte sich um die Verwendung einer if
-Kontrollstruktur drehen. Sie könnten überprüfen, ob das Verzeichnis existiert, und wenn nicht, fahren Sie mit der Erstellung fort; ansonsten nichts tun.
Das folgende Skript erläutert dies:
if [ ! -d dir_name ]; then mkdir dir_name; fi