Führen Sie Mkdir nur aus, wenn das Verzeichnis nicht vorhanden ist

Abdullah Bukhari 15 Februar 2024
  1. Der Befehl mkdir und sein Zweck
  2. Verzeichnisse erstellen mit mkdir
  3. Erstellen Sie Verzeichnisse mit mkdir nur, wenn sie nicht existieren
  4. Verwenden Sie mkdir mit einer if-Kontrollstruktur
Führen Sie Mkdir nur aus, wenn das Verzeichnis nicht vorhanden ist

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

Verzeichnisse erstellen mit mkdir

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

Verzeichnisse nur mit mkdir erstellen, wenn sie nicht existieren

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

Verwendung von mkdir mit einer if-Kontrollstruktur

Verwandter Artikel - Bash Directory