Ich schreibe ein Shell-Skript, das unter der KornShell (ksh) unter AIX ausgeführt werden soll. Ich möchte den mkdir
Befehl verwenden, um ein Verzeichnis zu erstellen. Möglicherweise ist das Verzeichnis jedoch bereits vorhanden. In diesem Fall möchte ich nichts tun. Daher möchte ich entweder testen, ob das Verzeichnis nicht vorhanden ist, oder den Fehler "Datei vorhanden" unterdrücken, der mkdir
beim Versuch, ein vorhandenes Verzeichnis zu erstellen, ausgelöst wird.
Irgendwelche Gedanken darüber, wie man das am besten macht?
mkdir
auf Unix-ähnliche Systeme, nicht auf Windows.-p
ist für die Einhaltung der POSIX / Single Unix-Spezifikation erforderlich, sodass alles unterstützt wird, was diese Spezifikationen erfüllen soll-p
. Windows ist völlig anders, es sei denn, Sie verwenden eine POSIX-Emulationsebene wie Cygwin oder MSYS.mkdir -p
man Klammern verwenden kann!{}
um einen "komplexen" Verzeichnisbaum in einem Befehl zu erstellen. Siehe hier: technosophos.com/2010/04/15/...||
statt ,&&
weil dann die ganze Linie hat den richtigen Exit - Status. Wichtig, wenn Ihre Shell mit ausgeführt wirderrexit
oder wenn diese Zeile die letzte in einer Funktion ist, Switch-Case, was auch immer.mkdir
; Die Shell erweitert einen solchen Ausdruck zu einer diskreten Liste von Argumenten, an die übergeben wirdmkdir
.Das sollte funktionieren:
oder:
Dadurch wird das Verzeichnis erstellt, wenn es nicht vorhanden ist. Sie werden jedoch gewarnt, wenn der Name des Verzeichnisses, das Sie erstellen möchten, bereits von einem anderen Verzeichnis als einem Verzeichnis verwendet wird.
quelle
Verwenden Sie das Flag -p.
quelle
Komplexe Verzeichnisbäume mit einem Befehl definieren
quelle
mkdir
, sondern die Shell, die den Befehl ausführt. Es heißt Klammererweiterung - AFAIK, nur Bash, ksh, zsh und die C-Shell unterstützen es.folder name
, müssen Sie verwendenfolder\ name
)Wenn Sie keine Fehlermeldung anzeigen möchten:
Wenn Sie Ihre eigene Fehlermeldung anzeigen möchten:
quelle
Das Alte hat sich bewährt
wird tun, was Sie wollen, mit keiner der Rennbedingungen, die viele der anderen Lösungen haben.
Manchmal sind die einfachsten (und hässlichsten) Lösungen die besten.
quelle
mkdir foo
funktioniert auch wenn das Verzeichnis existiert. Versuchen Sie es mit dem Verzeichnis "foo", wenn das Verzeichnis "foo" nicht vorhanden ist-p
Flag, .Beispiel: -
Dadurch wird das Verzeichnis "foo" nur erstellt, wenn es nicht vorhanden ist. :) :)
quelle
quelle
Oder wenn Sie zuerst nach der Existenz suchen möchten:
-e ist der existierende Test für Korn Shell.
Sie können auch versuchen, ein Korn-Shell-Handbuch zu googeln.
quelle
mkdir unterstützt -p switch auf Windows 8+ Systemen nicht mehr.
Sie können dies verwenden:
quelle
Siehe Manpage
man mkdir
für Option -p
Dadurch werden alle Verzeichnisse in einem bestimmten Pfad erstellt. Wenn vorhanden, wird kein Fehler ausgegeben. Andernfalls werden alle Verzeichnisse im angegebenen Pfad von links nach rechts erstellt. Versuchen Sie den folgenden Befehl. die Verzeichnisse
newdir
undanotherdir
existiert nicht, bevor dieser Befehl ausgegeben wirdRichtige Benutzung
mkdir -p /tmp/newdir/anotherdir
Nach dem Ausführen des Befehls können Sie unter / tmp sehen
newdir
undanotherdir
erstellen. Sie können diesen Befehl so oft ausgeben, wie Sie möchtenexit(0)
. Aus diesem Grund verwenden die meisten Benutzer diesen Befehl in Shell-Skripten, bevor sie diese tatsächlichen Pfade verwenden.quelle
Sie können entweder die if-Schleife verwenden, um zu überprüfen, ob ein Verzeichnis vorhanden ist oder nicht. Wenn es nicht beendet wird, erstellen Sie das Verzeichnis.
1) dir = / home / dir_name
2) Sie können ein Verzeichnis verwenden, indem Sie mkdir mit der Option -p verwenden, um ein Verzeichnis zu erstellen. Es wird geprüft, ob das Verzeichnis nicht verfügbar ist.
Mit mkdir -p kann auch die Baumstruktur des Verzeichnisses erstellt werden. Wenn Sie das übergeordnete und das untergeordnete Verzeichnis mit demselben Befehl erstellen möchten, können Sie mkdir -p auswählen
quelle
Dies ist eine einfache Funktion (Bash-Shell), mit der Sie ein Verzeichnis erstellen können, wenn es nicht vorhanden ist.
Sie können die obige Funktion wie folgt aufrufen:
Das obige erstellt fooDir und BarDir, wenn sie nicht existieren. Beachten Sie die Option "-p" im Befehl mkdir, mit der Verzeichnisse rekursiv erstellt werden. Hoffe das hilft.
quelle
quelle
quelle