J'écris un script shell à exécuter sous KornShell (ksh) sur AIX. Je voudrais utiliser la mkdir
commande pour créer un répertoire. Mais le répertoire existe peut-être déjà, auquel cas je ne veux rien faire. Je veux donc soit tester pour voir que le répertoire n'existe pas, soit supprimer l'erreur "Le fichier existe" qui se mkdir
déclenche lorsqu'il essaie de créer un répertoire existant.
Avez-vous des idées sur la meilleure façon de procéder?
mkdir
les systèmes de type Unix, pas Windows.-p
est requis pour la conformité aux spécifications POSIX / Single Unix, donc tout ce qui vise à se conformer à ces spécifications sera pris en charge-p
. Windows est entièrement différent, sauf si vous utilisez une couche d'émulation POSIX comme Cygwin ou MSYS.mkdir -p
, vous pouvez utiliser des crochets!{}
pour créer une arborescence de répertoires "complexe" dans une commande. Voir ici: technosophos.com/2010/04/15/…||
plutôt que&&
parce qu'alors toute la ligne a le bon état de sortie. Important si votre shell fonctionne avecerrexit
ou si cette ligne est la dernière d'une fonction, switch-case, peu importe.mkdir
; le shell étend une telle expression à une liste discrète d'arguments qui sont passés àmkdir
.Cela devrait fonctionner:
ou:
qui créera le répertoire s'il n'existe pas, mais vous avertira si le nom du répertoire que vous essayez de créer est déjà utilisé par autre chose qu'un répertoire.
la source
Utilisez l'indicateur -p.
la source
Définir des arborescences de répertoires complexes avec une seule commande
la source
mkdir
soi, mais le shell qui exécute la commande. C'est ce qu'on appelle l'expansion de l'accolade - AFAIK, seuls Bash, ksh, zsh et le shell C le prennent en charge.folder name
vous devez utiliserfolder\ name
)Si vous ne souhaitez afficher aucun message d'erreur:
Si vous souhaitez afficher votre propre message d'erreur:
la source
Le vieux éprouvé
fera ce que vous voulez avec aucune des conditions de course que beaucoup d'autres solutions ont.
Parfois, les solutions les plus simples (et les plus laides) sont les meilleures.
la source
mkdir foo
fonctionne même si le répertoire existe. Pour le faire fonctionner uniquement si le répertoire nommé "foo" n'existe pas, essayez d'utiliser l'-p
indicateur.Exemple :-
Cela ne créera le répertoire nommé "foo" que s'il n'existe pas. :)
la source
la source
Ou si vous voulez d'abord vérifier l'existence:
-e est le test existant pour korn shell.
Vous pouvez également essayer de googler un manuel du shell korn.
la source
mkdir ne prend plus en charge le commutateur -p sur les systèmes Windows 8+.
Vous pouvez utiliser ceci:
la source
Se référant à la page
man mkdir
de manuel pour l'option -p
qui créera tous les répertoires dans un chemin donné, s'il existe, ne génère aucune erreur sinon il crée tous les répertoires de gauche à droite dans le chemin donné. Essayez la commande ci-dessous. les répertoires
newdir
etanotherdir
n'existe pas avant d'émettre cette commandeusage correct
mkdir -p /tmp/newdir/anotherdir
Après avoir exécuté la commande, vous pouvez voir
newdir
etanotherdir
créer sous / tmp. Vous pouvez exécuter cette commande autant de fois que vous le souhaitez, la commande a toujoursexit(0)
. Pour cette raison, la plupart des gens utilisent cette commande dans des scripts shell avant d'utiliser ces chemins réels.la source
Vous pouvez soit utiliser la boucle if pour vérifier si le répertoire existe ou non, s'il ne se termine pas, créer le répertoire.
1) dir = / home / dir_name
2) Vous pouvez utiliser le répertoire mkdir avec l'option -p pour créer un répertoire. Il vérifiera si le répertoire n'est pas disponible.
mkdir -p permet également de créer l'arborescence du répertoire. Si vous souhaitez créer les répertoires parent et enfant à l'aide de la même commande, vous pouvez choisir mkdir -p
la source
Il s'agit d'une fonction simple (shell bash) qui vous permet de créer un répertoire s'il n'existe pas.
Vous pouvez appeler la fonction ci-dessus comme:
Ce qui précède crée fooDir et BarDir s'ils n'existent pas. Notez l'option "-p" dans la commande mkdir qui crée récursivement des répertoires. J'espère que cela t'aides.
la source
la source
la source