shell - not - mkdir linux




Comment faire pour mkdir seulement si un répertoire n'existe pas déjà? (8)

C'est une fonction simple (bash shell) qui vous permet de créer un répertoire s'il n'existe pas.

#----------------------------------
# Create a directory if it doesn't exist
#------------------------------------
createDirectory() {
    if [ ! -d $1 ]
        then
        mkdir -p $1
    fi
}

Vous pouvez appeler la fonction ci-dessus comme:

createDirectory / tmp / fooDir / BarDir

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 des répertoires récursivement. J'espère que cela t'aides.

J'écris un script shell à exécuter sous KornShell (ksh) sous AIX. Je voudrais utiliser la commande mkdir pour créer un répertoire. Mais le répertoire peut déjà exister, auquel cas je ne veux rien faire. Donc, je veux soit tester pour voir que le répertoire n'existe pas, ou supprimer l'erreur "Fichier existe" que mkdir jette quand il essaie de créer un répertoire existant.

Des pensées sur la meilleure façon de faire cela?


Cela devrait fonctionner:

$ mkdir -p dir

ou:

if [[ ! -e $dir ]]; then
    mkdir $dir
elif [[ ! -d $dir ]]; then
    echo "$dir already exists but is not a directory" 1>&2
fi

ce 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.


Essayez mkdir -p :

mkdir -p foo

Notez que cela créera également des répertoires intermédiaires qui n'existent pas; par exemple,

mkdir -p foo/bar/baz

créera les répertoires foo , foo/bar et foo/bar/baz s'ils n'existent pas.

Si vous voulez une erreur quand les répertoires parents n'existent pas, et que vous voulez créer le répertoire s'il n'existe pas, vous pouvez d'abord test l'existence du répertoire:

[ -d foo ] || mkdir foo

Le vieux essayé et vrai

mkdir /tmp/qq >/dev/null 2>&1

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.


Si vous ne voulez pas afficher de message d'erreur:

[ -d newdir ] || mkdir newdir

Si vous voulez afficher votre propre message d'erreur:

[ -d newdir ] && echo "Directory Exists" || mkdir newdir

Utilisez le drapeau -p.

man mkdir
mkdir -p foo

mkdir foo fonctionne même si le répertoire existe. Pour que cela fonctionne uniquement si le répertoire nommé "foo" n'existe pas, essayez d'utiliser l' -p .

Exemple :-

mkdir -p foo

Cela créera le répertoire nommé "foo" seulement s'il n'existe pas. :)


directory_name = "foo"

if [ -d $directory_name ]
then
    echo "Directory already exists"
else
    mkdir $directory_name
fi




mkdir