web-dev-qa-db-fra.com

Seulement mkdir s'il n'existe pas

Dans mon script bash je fais:

mkdir product;

Lorsque je lance le script plusieurs fois, je reçois:

mkdir: product: File exists

Dans la console.

Je cherche donc à lancer mkdir uniquement si le répertoire n'existe pas. Est-ce possible?

83
More Than Five

Faire un test

[[ -d dir ]] || mkdir dir

Ou utilisez l'option -p:

mkdir -p dir
175
konsolebox
if [ ! -d directory ]; then
  mkdir directory
fi

ou

mkdir -p directory

-p assure la création si directory n'existe pas

69
sr01853

Utilisez l'option -p de mkdir, mais notez qu'elle a également un autre effet.

 -p      Create intermediate directories as required.  If this option is not specified, the full path prefix of each oper-
         and must already exist.  On the other hand, with this option specified, no error will be reported if a directory
         given as an operand already exists.  Intermediate directories are created with permission bits of rwxrwxrwx
         (0777) as modified by the current umask, plus write and search permission for the owner.
8
Andy Lester

mkdir -p

-p, --parents pas d'erreur s'il existe, crée les répertoires parents au besoin

3
Paul Rubel

Essayez d'utiliser ceci: -

mkdir -p dir;

REMARQUE: - Ceci créera également tous les répertoires intermédiaires qui n'existent pas. par exemple,

Départ mkdir -p

ou essayez ceci: -

if [[ ! -e $dir ]]; then
    mkdir $dir
Elif [[ ! -d $dir ]]; then
    echo "$Message" 1>&2
fi
2
Rahul Tripathi